|
7 | 7 | //===----------------------------------------------------------------------===//
|
8 | 8 | //
|
9 | 9 | // This file is used as the registry of passes in registerPassBuilderCallbacks
|
| 10 | +// Just put the following lines in the body of registerPassBuilderCallbacks: |
| 11 | +// #define GET_PASS_REGISTRY "<Target>PassRegistry.def" |
| 12 | +// #include "llvm/Passes/TargetPassRegistry.inc" |
10 | 13 | //
|
11 | 14 | //===----------------------------------------------------------------------===//
|
12 | 15 |
|
|
18 | 21 | #error "must provide <Target>PassRegistry.def"
|
19 | 22 | #endif
|
20 | 23 |
|
21 |
| -{ |
22 |
| - |
23 |
| - // FIXME: use std::size when MSVC_MIN >= 19.30 |
24 |
| - |
25 |
| - static constexpr bool HAVE_MODULE_ANALYSIS_ = |
26 |
| - std::array{ |
27 |
| - "", |
28 |
| -#define MODULE_ANALYSIS(NAME, CREATE_PASS) NAME, |
29 |
| -#include GET_PASS_REGISTRY |
30 |
| -#undef MODULE_ANALYSIS |
31 |
| - } |
32 |
| - .size() > 1; |
33 |
| - |
34 |
| - static constexpr bool HAVE_MODULE_PASS_ = |
35 |
| - std::array{ |
36 |
| - "", |
37 |
| -#define MODULE_PASS(NAME, CREATE_PASS) NAME, |
38 |
| -#include GET_PASS_REGISTRY |
39 |
| -#undef MODULE_PASS |
40 |
| - } |
41 |
| - .size() > 1; |
42 |
| - |
43 |
| - static constexpr bool HAVE_MODULE_PASS_WITH_PARAMS_ = |
44 |
| - std::array{ |
45 |
| - "", |
46 |
| -#define MODULE_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) NAME, |
47 |
| -#include GET_PASS_REGISTRY |
48 |
| -#undef MODULE_PASS_WITH_PARAMS |
49 |
| - } |
50 |
| - .size() > 1; |
51 |
| - |
52 |
| - static constexpr bool HAVE_FUNCTION_ANALYSIS_ = |
53 |
| - std::array{ |
54 |
| - "", |
55 |
| -#define FUNCTION_ANALYSIS(NAME, CREATE_PASS) NAME, |
56 |
| -#include GET_PASS_REGISTRY |
57 |
| -#undef FUNCTION_ANALYSIS |
58 |
| - } |
59 |
| - .size() > 1; |
60 |
| - |
61 |
| - static constexpr bool HAVE_FUNCTION_ALIAS_ANALYSIS_ = |
62 |
| - std::array{ |
63 |
| - "", |
64 |
| -#define FUNCTION_ALIAS_ANALYSIS(NAME, CREATE_PASS) NAME, |
65 |
| -#include GET_PASS_REGISTRY |
66 |
| -#undef FUNCTION_ALIAS_ANALYSIS |
67 |
| - } |
68 |
| - .size() > 1; |
69 |
| - |
70 |
| - static constexpr bool HAVE_FUNCTION_PASS_ = |
71 |
| - std::array{ |
72 |
| - "", |
73 |
| -#define FUNCTION_PASS(NAME, CREATE_PASS) NAME, |
74 |
| -#include GET_PASS_REGISTRY |
75 |
| -#undef FUNCTION_PASS |
76 |
| - } |
77 |
| - .size() > 1; |
78 |
| - |
79 |
| - static constexpr bool HAVE_FUNCTION_PASS_WITH_PARAMS_ = |
80 |
| - std::array{ |
81 |
| - "", |
82 |
| -#define FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ |
83 |
| - NAME, |
84 |
| -#include GET_PASS_REGISTRY |
85 |
| -#undef FUNCTION_PASS_WITH_PARAMS |
86 |
| - } |
87 |
| - .size() > 1; |
88 |
| - |
89 |
| - static constexpr bool HAVE_LOOP_ANALYSIS_ = |
90 |
| - std::array{ |
91 |
| - "", |
92 |
| -#define LOOP_ANALYSIS(NAME, CREATE_PASS) NAME, |
93 |
| -#include GET_PASS_REGISTRY |
94 |
| -#undef LOOP_ANALYSIS |
95 |
| - } |
96 |
| - .size() > 1; |
97 |
| - |
98 |
| - static constexpr bool HAVE_LOOP_PASS_ = |
99 |
| - std::array{ |
100 |
| - "", |
101 |
| -#define LOOP_PASS(NAME, CREATE_PASS) NAME, |
102 |
| -#include GET_PASS_REGISTRY |
103 |
| -#undef LOOP_PASS |
104 |
| - } |
105 |
| - .size() > 1; |
106 |
| - |
107 |
| - static constexpr bool HAVE_MACHINE_FUNCTION_ANALYSIS_ = |
108 |
| - std::array{ |
109 |
| - "", |
110 |
| -#define MACHINE_FUNCTION_ANALYSIS(NAME, CREATE_PASS) NAME, |
111 |
| -#include GET_PASS_REGISTRY |
112 |
| -#undef MACHINE_FUNCTION_ANALYSIS |
113 |
| - } |
114 |
| - .size() > 1; |
115 |
| - |
116 |
| - static constexpr bool HAVE_MACHINE_FUNCTION_PASS_ = |
117 |
| - std::array{ |
118 |
| - "", |
119 |
| -#define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS) NAME, |
120 |
| -#include GET_PASS_REGISTRY |
121 |
| -#undef MACHINE_FUNCTION_PASS |
122 |
| - } |
123 |
| - .size() > 1; |
124 |
| - |
125 |
| - static constexpr bool HAVE_MACHINE_FUNCTION_PASS_WITH_PARAMS_ = |
126 |
| - std::array{ |
127 |
| - "", |
128 |
| -#define MACHINE_FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, \ |
129 |
| - PARAMS) \ |
130 |
| - NAME, |
131 |
| -#include GET_PASS_REGISTRY |
132 |
| -#undef MACHINE_FUNCTION_PASS_WITH_PARAMS |
133 |
| - } |
134 |
| - .size() > 1; |
135 |
| - |
136 |
| - if (PopulateClassToPassNames) { |
137 |
| - auto *PIC = PB.getPassInstrumentationCallbacks(); |
| 24 | +if (PopulateClassToPassNames) { |
| 25 | + auto *PIC = PB.getPassInstrumentationCallbacks(); |
138 | 26 |
|
139 | 27 | #define ADD_CLASS_PASS_TO_PASS_NAME(NAME, CREATE_PASS) \
|
140 | 28 | PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME);
|
|
165 | 53 | ADD_CLASS_PASS_TO_PASS_NAME(NAME, CREATE_PASS)
|
166 | 54 | #define MACHINE_FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, \
|
167 | 55 | PARAMS) \
|
168 |
| - ADD_CLASS_PASS_TO_PASS_NAME_WITH_PARAMS(NAME, CREATE_PASS) |
| 56 | + ADD_CLASS_PASS_TO_PASS_NAME_WITH_PARAMS(NAME, CLASS) |
169 | 57 | #include GET_PASS_REGISTRY
|
170 | 58 | #undef MODULE_ANALYSIS
|
171 | 59 | #undef MODULE_PASS
|
|
180 | 68 | #undef MACHINE_FUNCTION_PASS_WITH_PARAMS
|
181 | 69 | #undef ADD_CLASS_PASS_TO_PASS_NAME
|
182 | 70 | #undef ADD_CLASS_PASS_TO_PASS_NAME_WITH_PARAMS
|
183 |
| - } |
| 71 | +} |
184 | 72 |
|
185 | 73 | #define ADD_PASS(NAME, CREATE_PASS) \
|
186 | 74 | if (Name == NAME) { \
|
|
197 | 85 | return true; \
|
198 | 86 | }
|
199 | 87 |
|
200 |
| - if constexpr (HAVE_MODULE_PASS_) { |
201 |
| - PB.registerPipelineParsingCallback( |
202 |
| - [=](StringRef Name, ModulePassManager &PM, |
203 |
| - ArrayRef<PassBuilder::PipelineElement>) { |
| 88 | +PB.registerPipelineParsingCallback([=](StringRef Name, ModulePassManager &PM, |
| 89 | + ArrayRef<PassBuilder::PipelineElement>) { |
204 | 90 | #define MODULE_PASS(NAME, CREATE_PASS) ADD_PASS(NAME, CREATE_PASS)
|
205 | 91 | #include GET_PASS_REGISTRY
|
206 | 92 | #undef MODULE_PASS
|
207 |
| - return false; |
208 |
| - }); |
209 |
| - } |
| 93 | + return false; |
| 94 | +}); |
210 | 95 |
|
211 |
| - if constexpr (HAVE_MODULE_PASS_WITH_PARAMS_) { |
212 |
| - PB.registerPipelineParsingCallback( |
213 |
| - [=](StringRef Name, ModulePassManager &PM, |
214 |
| - ArrayRef<PassBuilder::PipelineElement>) { |
| 96 | +PB.registerPipelineParsingCallback([=](StringRef Name, ModulePassManager &PM, |
| 97 | + ArrayRef<PassBuilder::PipelineElement>) { |
215 | 98 | #define MODULE_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \
|
216 | 99 | ADD_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER)
|
217 | 100 | #include GET_PASS_REGISTRY
|
218 | 101 | #undef MODULE_PASS_WITH_PARAMS
|
219 |
| - return false; |
220 |
| - }); |
221 |
| - } |
| 102 | + return false; |
| 103 | +}); |
222 | 104 |
|
223 |
| - if constexpr (HAVE_FUNCTION_PASS_) { |
224 |
| - PB.registerPipelineParsingCallback( |
225 |
| - [=](StringRef Name, FunctionPassManager &PM, |
226 |
| - ArrayRef<PassBuilder::PipelineElement>) { |
| 105 | +PB.registerPipelineParsingCallback([=](StringRef Name, FunctionPassManager &PM, |
| 106 | + ArrayRef<PassBuilder::PipelineElement>) { |
227 | 107 | #define FUNCTION_PASS(NAME, CREATE_PASS) ADD_PASS(NAME, CREATE_PASS)
|
228 | 108 | #include GET_PASS_REGISTRY
|
229 | 109 | #undef FUNCTION_PASS
|
230 |
| - return false; |
231 |
| - }); |
232 |
| - } |
| 110 | + return false; |
| 111 | +}); |
233 | 112 |
|
234 |
| - if constexpr (HAVE_FUNCTION_PASS_WITH_PARAMS_) { |
235 |
| - PB.registerPipelineParsingCallback( |
236 |
| - [=](StringRef Name, FunctionPassManager &PM, |
237 |
| - ArrayRef<PassBuilder::PipelineElement>) { |
| 113 | +PB.registerPipelineParsingCallback([=](StringRef Name, FunctionPassManager &PM, |
| 114 | + ArrayRef<PassBuilder::PipelineElement>) { |
238 | 115 | #define FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \
|
239 | 116 | ADD_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER)
|
240 | 117 | #include GET_PASS_REGISTRY
|
241 | 118 | #undef FUNCTION_PASS_WITH_PARAMS
|
242 |
| - return false; |
243 |
| - }); |
244 |
| - } |
| 119 | + return false; |
| 120 | +}); |
245 | 121 |
|
246 |
| - if constexpr (HAVE_LOOP_PASS_) { |
247 |
| - PB.registerPipelineParsingCallback( |
248 |
| - [=](StringRef Name, LoopPassManager &PM, |
249 |
| - ArrayRef<PassBuilder::PipelineElement>) { |
| 122 | +PB.registerPipelineParsingCallback([=](StringRef Name, LoopPassManager &PM, |
| 123 | + ArrayRef<PassBuilder::PipelineElement>) { |
250 | 124 | #define LOOP_PASS(NAME, CREATE_PASS) ADD_PASS(NAME, CREATE_PASS)
|
251 | 125 | #include GET_PASS_REGISTRY
|
252 |
| - return false; |
253 |
| - }); |
254 |
| - } |
| 126 | + return false; |
| 127 | +}); |
255 | 128 |
|
256 |
| - if constexpr (HAVE_MACHINE_FUNCTION_PASS_) { |
257 |
| - PB.registerPipelineParsingCallback( |
258 |
| - [=](StringRef Name, MachineFunctionPassManager &PM, |
259 |
| - ArrayRef<PassBuilder::PipelineElement>) { |
| 129 | +PB.registerPipelineParsingCallback([=](StringRef Name, |
| 130 | + MachineFunctionPassManager &PM, |
| 131 | + ArrayRef<PassBuilder::PipelineElement>) { |
260 | 132 | #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS) ADD_PASS(NAME, CREATE_PASS)
|
261 | 133 | #include GET_PASS_REGISTRY
|
262 |
| - return false; |
263 |
| - }); |
264 |
| - } |
| 134 | + return false; |
| 135 | +}); |
265 | 136 |
|
266 |
| - if constexpr (HAVE_MACHINE_FUNCTION_PASS_WITH_PARAMS_) { |
267 |
| - PB.registerPipelineParsingCallback( |
268 |
| - [=](StringRef Name, FunctionPassManager &PM, |
269 |
| - ArrayRef<PassBuilder::PipelineElement>) { |
| 137 | +PB.registerPipelineParsingCallback([=](StringRef Name, FunctionPassManager &PM, |
| 138 | + ArrayRef<PassBuilder::PipelineElement>) { |
270 | 139 | #define MACHINE_FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, \
|
271 | 140 | PARAMS) \
|
272 | 141 | ADD_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER)
|
273 | 142 | #include GET_PASS_REGISTRY
|
274 | 143 | #undef MACHINE_FUNCTION_PASS_WITH_PARAMS
|
275 |
| - return false; |
276 |
| - }); |
277 |
| - } |
| 144 | + return false; |
| 145 | +}); |
| 146 | + |
278 | 147 | #undef ADD_PASS
|
279 | 148 | #undef ADD_PASS_WITH_PARAMS
|
280 | 149 |
|
281 |
| - if constexpr (HAVE_MODULE_ANALYSIS_) { |
282 |
| - PB.registerAnalysisRegistrationCallback([](ModuleAnalysisManager &AM) { |
| 150 | +PB.registerAnalysisRegistrationCallback([](ModuleAnalysisManager &AM) { |
283 | 151 | #define MODULE_ANALYSIS(NAME, CREATE_PASS) \
|
284 | 152 | AM.registerPass([&] { return CREATE_PASS; });
|
285 | 153 | #include GET_PASS_REGISTRY
|
286 | 154 | #undef MODULE_ANALYSIS
|
287 |
| - }); |
288 |
| - } |
| 155 | +}); |
289 | 156 |
|
290 |
| - if constexpr (HAVE_FUNCTION_ANALYSIS_) { |
291 |
| - PB.registerAnalysisRegistrationCallback([](FunctionAnalysisManager &AM) { |
| 157 | +PB.registerAnalysisRegistrationCallback([](FunctionAnalysisManager &AM) { |
292 | 158 | #define FUNCTION_ANALYSIS(NAME, CREATE_PASS) \
|
293 | 159 | AM.registerPass([&] { return CREATE_PASS; });
|
294 | 160 | #include GET_PASS_REGISTRY
|
295 | 161 | #undef FUNCTION_ANALYSIS
|
296 |
| - }); |
297 |
| - } |
| 162 | +}); |
298 | 163 |
|
299 |
| - if constexpr (HAVE_FUNCTION_ALIAS_ANALYSIS_) { |
300 |
| - PB.registerParseAACallback([](StringRef Name, AAManager &AM) { |
| 164 | +PB.registerParseAACallback([](StringRef Name, AAManager &AM) { |
301 | 165 | #define FUNCTION_ANALYSIS(NAME, CREATE_PASS) \
|
302 | 166 | if (Name == NAME) { \
|
303 | 167 | AM.registerFunctionAnalysis< \
|
|
306 | 170 | }
|
307 | 171 | #include GET_PASS_REGISTRY
|
308 | 172 | #undef FUNCTION_ANALYSIS
|
309 |
| - return false; |
310 |
| - }); |
311 |
| - } |
| 173 | + return false; |
| 174 | +}); |
312 | 175 |
|
313 |
| - if constexpr (HAVE_LOOP_ANALYSIS_) { |
314 |
| - PB.registerAnalysisRegistrationCallback([](LoopAnalysisManager &AM) { |
| 176 | +PB.registerAnalysisRegistrationCallback([](LoopAnalysisManager &AM) { |
315 | 177 | #define LOOP_ANALYSIS(NAME, CREATE_PASS) \
|
316 | 178 | AM.registerPass([&] { return CREATE_PASS; });
|
317 | 179 | #include GET_PASS_REGISTRY
|
318 | 180 | #undef LOOP_ANALYSIS
|
319 |
| - }); |
320 |
| - } |
| 181 | +}); |
321 | 182 |
|
322 |
| - if constexpr (HAVE_MACHINE_FUNCTION_ANALYSIS_) { |
323 |
| - PB.registerAnalysisRegistrationCallback( |
324 |
| - [](MachineFunctionAnalysisManager &AM) { |
| 183 | +PB.registerAnalysisRegistrationCallback([](MachineFunctionAnalysisManager &AM) { |
325 | 184 | #define MACHINE_FUNCTION_ANALYSIS(NAME, CREATE_PASS) \
|
326 | 185 | AM.registerPass([&] { return CREATE_PASS; });
|
327 | 186 | #include GET_PASS_REGISTRY
|
328 | 187 | #undef MACHINE_FUNCTION_ANALYSIS
|
329 |
| - }); |
330 |
| - } |
331 |
| -} |
| 188 | +}); |
332 | 189 |
|
333 | 190 | #undef GET_PASS_REGISTRY
|
334 | 191 | #endif // GET_PASS_REGISTRY
|
0 commit comments