LLZK 3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
AnalysisPasses.h.inc
Go to the documentation of this file.
1/* Autogenerated by mlir-tblgen; don't manually edit */
2
3#ifdef GEN_PASS_DECL
4// Generate declarations for all passes.
5#define GEN_PASS_DECL_CALLGRAPHPRINTERPASS
6#define GEN_PASS_DECL_CALLGRAPHSCCSPRINTERPASS
7#define GEN_PASS_DECL_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
8#define GEN_PASS_DECL_INTERVALANALYSISPRINTERPASS
9#define GEN_PASS_DECL_PREDECESSORPRINTERPASS
10#define GEN_PASS_DECL_SYMBOLDEFTREEPRINTERPASS
11#define GEN_PASS_DECL_SYMBOLUSEGRAPHPRINTERPASS
12#undef GEN_PASS_DECL
13#endif // GEN_PASS_DECL
14
15//===----------------------------------------------------------------------===//
16// CallGraphPrinterPass
17//===----------------------------------------------------------------------===//
18#ifdef GEN_PASS_DECL_CALLGRAPHPRINTERPASS
19struct CallGraphPrinterPassOptions {
21};
22std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass();
23std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass(CallGraphPrinterPassOptions options);
24#undef GEN_PASS_DECL_CALLGRAPHPRINTERPASS
25#endif // GEN_PASS_DECL_CALLGRAPHPRINTERPASS
26#ifdef GEN_PASS_DEF_CALLGRAPHPRINTERPASS
27
28namespace impl {
29 std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass();
30} // namespace impl
31
32namespace impl {
33 std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass(CallGraphPrinterPassOptions options);
34} // namespace impl
35namespace impl {
36
37template <typename DerivedT>
38class CallGraphPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
39public:
40 using Base = CallGraphPrinterPassBase;
41
42 CallGraphPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
43 CallGraphPrinterPassBase(const CallGraphPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
44 CallGraphPrinterPassBase& operator=(const CallGraphPrinterPassBase &) = delete;
45 CallGraphPrinterPassBase(CallGraphPrinterPassBase &&) = delete;
46 CallGraphPrinterPassBase& operator=(CallGraphPrinterPassBase &&) = delete;
47 ~CallGraphPrinterPassBase() = default;
48
50 static constexpr ::llvm::StringLiteral getArgumentName() {
51 return ::llvm::StringLiteral("llzk-print-call-graph");
52 }
53 ::llvm::StringRef getArgument() const override { return "llzk-print-call-graph"; }
54
55 ::llvm::StringRef getDescription() const override { return R"PD(Print the LLZK module's call graph.)PD"; }
56
58 static constexpr ::llvm::StringLiteral getPassName() {
59 return ::llvm::StringLiteral("CallGraphPrinterPass");
60 }
61 ::llvm::StringRef getName() const override { return "CallGraphPrinterPass"; }
62
64 static bool classof(const ::mlir::Pass *pass) {
65 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
66 }
67
69 std::unique_ptr<::mlir::Pass> clonePass() const override {
70 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
71 }
72
74 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
75 registry.insert<llzk::LLZKDialect>();
76 registry.insert<llzk::boolean::BoolDialect>();
77 registry.insert<llzk::array::ArrayDialect>();
78 registry.insert<llzk::component::StructDialect>();
79 registry.insert<llzk::constrain::ConstrainDialect>();
80 registry.insert<llzk::felt::FeltDialect>();
81 registry.insert<llzk::global::GlobalDialect>();
82 registry.insert<llzk::include::IncludeDialect>();
83 registry.insert<llzk::function::FunctionDialect>();
84 registry.insert<llzk::string::StringDialect>();
85 registry.insert<llzk::polymorphic::PolymorphicDialect>();
86 registry.insert<mlir::arith::ArithDialect>();
87 registry.insert<mlir::scf::SCFDialect>();
88 }
89
93 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(CallGraphPrinterPassBase<DerivedT>)
94
95 CallGraphPrinterPassBase(CallGraphPrinterPassOptions options) : CallGraphPrinterPassBase() {
96 outputStream = std::move(options.outputStream);
97 }
98protected:
99 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc(R"PO(Specifies the stream to which the pass prints.)PO"), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
101 "Print pass output to 'llvm::outs()'"),
103 "Print pass output to 'llvm::errs()'"),
105 "Print pass output to 'llvm::dbgs()'")
106 )};
107private:
108
109 friend std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass() {
110 return std::make_unique<DerivedT>();
111 }
112
113 friend std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass(CallGraphPrinterPassOptions options) {
114 return std::make_unique<DerivedT>(std::move(options));
115 }
116};
117} // namespace impl
118
119std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass() {
120 return impl::createCallGraphPrinterPass();
121}
122
123std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass(CallGraphPrinterPassOptions options) {
124 return impl::createCallGraphPrinterPass(std::move(options));
125}
126#undef GEN_PASS_DEF_CALLGRAPHPRINTERPASS
127#endif // GEN_PASS_DEF_CALLGRAPHPRINTERPASS
128
129//===----------------------------------------------------------------------===//
130// CallGraphSCCsPrinterPass
131//===----------------------------------------------------------------------===//
132#ifdef GEN_PASS_DECL_CALLGRAPHSCCSPRINTERPASS
133struct CallGraphSCCsPrinterPassOptions {
135};
136std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass();
137std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass(CallGraphSCCsPrinterPassOptions options);
138#undef GEN_PASS_DECL_CALLGRAPHSCCSPRINTERPASS
139#endif // GEN_PASS_DECL_CALLGRAPHSCCSPRINTERPASS
140#ifdef GEN_PASS_DEF_CALLGRAPHSCCSPRINTERPASS
141
142namespace impl {
143 std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass();
144} // namespace impl
145
146namespace impl {
147 std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass(CallGraphSCCsPrinterPassOptions options);
148} // namespace impl
149namespace impl {
150
151template <typename DerivedT>
152class CallGraphSCCsPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
153public:
154 using Base = CallGraphSCCsPrinterPassBase;
155
156 CallGraphSCCsPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
157 CallGraphSCCsPrinterPassBase(const CallGraphSCCsPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
158 CallGraphSCCsPrinterPassBase& operator=(const CallGraphSCCsPrinterPassBase &) = delete;
159 CallGraphSCCsPrinterPassBase(CallGraphSCCsPrinterPassBase &&) = delete;
160 CallGraphSCCsPrinterPassBase& operator=(CallGraphSCCsPrinterPassBase &&) = delete;
161 ~CallGraphSCCsPrinterPassBase() = default;
162
164 static constexpr ::llvm::StringLiteral getArgumentName() {
165 return ::llvm::StringLiteral("llzk-print-call-graph-sccs");
166 }
167 ::llvm::StringRef getArgument() const override { return "llzk-print-call-graph-sccs"; }
168
169 ::llvm::StringRef getDescription() const override { return R"PD(Print the SCCs from the LLZK module's call graph.)PD"; }
170
172 static constexpr ::llvm::StringLiteral getPassName() {
173 return ::llvm::StringLiteral("CallGraphSCCsPrinterPass");
174 }
175 ::llvm::StringRef getName() const override { return "CallGraphSCCsPrinterPass"; }
176
178 static bool classof(const ::mlir::Pass *pass) {
179 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
180 }
181
183 std::unique_ptr<::mlir::Pass> clonePass() const override {
184 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
185 }
186
188 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
189 registry.insert<llzk::LLZKDialect>();
190 registry.insert<llzk::boolean::BoolDialect>();
191 registry.insert<llzk::array::ArrayDialect>();
192 registry.insert<llzk::component::StructDialect>();
193 registry.insert<llzk::constrain::ConstrainDialect>();
194 registry.insert<llzk::felt::FeltDialect>();
195 registry.insert<llzk::global::GlobalDialect>();
196 registry.insert<llzk::include::IncludeDialect>();
197 registry.insert<llzk::function::FunctionDialect>();
198 registry.insert<llzk::string::StringDialect>();
199 registry.insert<llzk::polymorphic::PolymorphicDialect>();
200 registry.insert<mlir::arith::ArithDialect>();
201 registry.insert<mlir::scf::SCFDialect>();
202 }
203
207 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(CallGraphSCCsPrinterPassBase<DerivedT>)
208
209 CallGraphSCCsPrinterPassBase(CallGraphSCCsPrinterPassOptions options) : CallGraphSCCsPrinterPassBase() {
210 outputStream = std::move(options.outputStream);
211 }
212protected:
213 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc(R"PO(Specifies the stream to which the pass prints.)PO"), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
215 "Print pass output to 'llvm::outs()'"),
217 "Print pass output to 'llvm::errs()'"),
219 "Print pass output to 'llvm::dbgs()'")
220 )};
221private:
222
223 friend std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass() {
224 return std::make_unique<DerivedT>();
225 }
226
227 friend std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass(CallGraphSCCsPrinterPassOptions options) {
228 return std::make_unique<DerivedT>(std::move(options));
229 }
230};
231} // namespace impl
232
233std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass() {
234 return impl::createCallGraphSCCsPrinterPass();
235}
236
237std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass(CallGraphSCCsPrinterPassOptions options) {
238 return impl::createCallGraphSCCsPrinterPass(std::move(options));
239}
240#undef GEN_PASS_DEF_CALLGRAPHSCCSPRINTERPASS
241#endif // GEN_PASS_DEF_CALLGRAPHSCCSPRINTERPASS
242
243//===----------------------------------------------------------------------===//
244// ConstraintDependencyGraphPrinterPass
245//===----------------------------------------------------------------------===//
246#ifdef GEN_PASS_DECL_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
247struct ConstraintDependencyGraphPrinterPassOptions {
249 bool runIntraprocedural = false;
250};
251std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass();
252std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass(ConstraintDependencyGraphPrinterPassOptions options);
253#undef GEN_PASS_DECL_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
254#endif // GEN_PASS_DECL_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
255#ifdef GEN_PASS_DEF_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
256
257namespace impl {
258 std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass();
259} // namespace impl
260
261namespace impl {
262 std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass(ConstraintDependencyGraphPrinterPassOptions options);
263} // namespace impl
264namespace impl {
265
266template <typename DerivedT>
267class ConstraintDependencyGraphPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
268public:
269 using Base = ConstraintDependencyGraphPrinterPassBase;
270
271 ConstraintDependencyGraphPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
272 ConstraintDependencyGraphPrinterPassBase(const ConstraintDependencyGraphPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
273 ConstraintDependencyGraphPrinterPassBase& operator=(const ConstraintDependencyGraphPrinterPassBase &) = delete;
274 ConstraintDependencyGraphPrinterPassBase(ConstraintDependencyGraphPrinterPassBase &&) = delete;
275 ConstraintDependencyGraphPrinterPassBase& operator=(ConstraintDependencyGraphPrinterPassBase &&) = delete;
276 ~ConstraintDependencyGraphPrinterPassBase() = default;
277
279 static constexpr ::llvm::StringLiteral getArgumentName() {
280 return ::llvm::StringLiteral("llzk-print-constraint-dependency-graphs");
281 }
282 ::llvm::StringRef getArgument() const override { return "llzk-print-constraint-dependency-graphs"; }
283
284 ::llvm::StringRef getDescription() const override { return R"PD(Print constraint dependency graph for all LLZK structs.)PD"; }
285
287 static constexpr ::llvm::StringLiteral getPassName() {
288 return ::llvm::StringLiteral("ConstraintDependencyGraphPrinterPass");
289 }
290 ::llvm::StringRef getName() const override { return "ConstraintDependencyGraphPrinterPass"; }
291
293 static bool classof(const ::mlir::Pass *pass) {
294 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
295 }
296
298 std::unique_ptr<::mlir::Pass> clonePass() const override {
299 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
300 }
301
303 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
304 registry.insert<llzk::LLZKDialect>();
305 registry.insert<llzk::boolean::BoolDialect>();
306 registry.insert<llzk::array::ArrayDialect>();
307 registry.insert<llzk::component::StructDialect>();
308 registry.insert<llzk::constrain::ConstrainDialect>();
309 registry.insert<llzk::felt::FeltDialect>();
310 registry.insert<llzk::global::GlobalDialect>();
311 registry.insert<llzk::include::IncludeDialect>();
312 registry.insert<llzk::function::FunctionDialect>();
313 registry.insert<llzk::string::StringDialect>();
314 registry.insert<llzk::polymorphic::PolymorphicDialect>();
315 registry.insert<mlir::arith::ArithDialect>();
316 registry.insert<mlir::scf::SCFDialect>();
317 }
318
322 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(ConstraintDependencyGraphPrinterPassBase<DerivedT>)
323
324 ConstraintDependencyGraphPrinterPassBase(ConstraintDependencyGraphPrinterPassOptions options) : ConstraintDependencyGraphPrinterPassBase() {
325 outputStream = std::move(options.outputStream);
326 runIntraprocedural = std::move(options.runIntraprocedural);
327 }
328protected:
329 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc(R"PO(Specifies the stream to which the pass prints.)PO"), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
331 "Print pass output to 'llvm::outs()'"),
333 "Print pass output to 'llvm::errs()'"),
335 "Print pass output to 'llvm::dbgs()'")
336 )};
337 ::mlir::Pass::Option<bool> runIntraprocedural{*this, "intraprocedural", ::llvm::cl::desc(R"PO(Whether to run the analysis intra-procedurally only (default is false).)PO"), ::llvm::cl::init(false)};
338private:
339
340 friend std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass() {
341 return std::make_unique<DerivedT>();
342 }
343
344 friend std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass(ConstraintDependencyGraphPrinterPassOptions options) {
345 return std::make_unique<DerivedT>(std::move(options));
346 }
347};
348} // namespace impl
349
350std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass() {
351 return impl::createConstraintDependencyGraphPrinterPass();
352}
353
354std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass(ConstraintDependencyGraphPrinterPassOptions options) {
355 return impl::createConstraintDependencyGraphPrinterPass(std::move(options));
356}
357#undef GEN_PASS_DEF_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
358#endif // GEN_PASS_DEF_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
359
360//===----------------------------------------------------------------------===//
361// IntervalAnalysisPrinterPass
362//===----------------------------------------------------------------------===//
363#ifdef GEN_PASS_DECL_INTERVALANALYSISPRINTERPASS
364struct IntervalAnalysisPrinterPassOptions {
366 std::string fieldName = "";
367 bool propagateInputConstraints = false;
368 bool printSolverConstraints = false;
369 bool printComputeIntervals = false;
370 bool printUnreducedIntervals = false;
371 bool printSSAIntervals = false;
372};
373std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass();
374std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass(IntervalAnalysisPrinterPassOptions options);
375#undef GEN_PASS_DECL_INTERVALANALYSISPRINTERPASS
376#endif // GEN_PASS_DECL_INTERVALANALYSISPRINTERPASS
377#ifdef GEN_PASS_DEF_INTERVALANALYSISPRINTERPASS
378
379namespace impl {
380 std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass();
381} // namespace impl
382
383namespace impl {
384 std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass(IntervalAnalysisPrinterPassOptions options);
385} // namespace impl
386namespace impl {
387
388template <typename DerivedT>
389class IntervalAnalysisPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
390public:
391 using Base = IntervalAnalysisPrinterPassBase;
392
393 IntervalAnalysisPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
394 IntervalAnalysisPrinterPassBase(const IntervalAnalysisPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
395 IntervalAnalysisPrinterPassBase& operator=(const IntervalAnalysisPrinterPassBase &) = delete;
396 IntervalAnalysisPrinterPassBase(IntervalAnalysisPrinterPassBase &&) = delete;
397 IntervalAnalysisPrinterPassBase& operator=(IntervalAnalysisPrinterPassBase &&) = delete;
398 ~IntervalAnalysisPrinterPassBase() = default;
399
401 static constexpr ::llvm::StringLiteral getArgumentName() {
402 return ::llvm::StringLiteral("llzk-print-interval-analysis");
403 }
404 ::llvm::StringRef getArgument() const override { return "llzk-print-interval-analysis"; }
405
406 ::llvm::StringRef getDescription() const override { return R"PD(Print interval analysis results for all LLZK structs.)PD"; }
407
409 static constexpr ::llvm::StringLiteral getPassName() {
410 return ::llvm::StringLiteral("IntervalAnalysisPrinterPass");
411 }
412 ::llvm::StringRef getName() const override { return "IntervalAnalysisPrinterPass"; }
413
415 static bool classof(const ::mlir::Pass *pass) {
416 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
417 }
418
420 std::unique_ptr<::mlir::Pass> clonePass() const override {
421 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
422 }
423
425 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
426 registry.insert<llzk::LLZKDialect>();
427 registry.insert<llzk::boolean::BoolDialect>();
428 registry.insert<llzk::array::ArrayDialect>();
429 registry.insert<llzk::component::StructDialect>();
430 registry.insert<llzk::constrain::ConstrainDialect>();
431 registry.insert<llzk::felt::FeltDialect>();
432 registry.insert<llzk::global::GlobalDialect>();
433 registry.insert<llzk::include::IncludeDialect>();
434 registry.insert<llzk::function::FunctionDialect>();
435 registry.insert<llzk::string::StringDialect>();
436 registry.insert<llzk::polymorphic::PolymorphicDialect>();
437 registry.insert<mlir::arith::ArithDialect>();
438 registry.insert<mlir::scf::SCFDialect>();
439 }
440
444 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(IntervalAnalysisPrinterPassBase<DerivedT>)
445
446 IntervalAnalysisPrinterPassBase(IntervalAnalysisPrinterPassOptions options) : IntervalAnalysisPrinterPassBase() {
447 outputStream = std::move(options.outputStream);
448 fieldName = std::move(options.fieldName);
449 propagateInputConstraints = std::move(options.propagateInputConstraints);
450 printSolverConstraints = std::move(options.printSolverConstraints);
451 printComputeIntervals = std::move(options.printComputeIntervals);
452 printUnreducedIntervals = std::move(options.printUnreducedIntervals);
453 printSSAIntervals = std::move(options.printSSAIntervals);
454 }
455protected:
456 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc(R"PO(Specifies the stream to which the pass prints.)PO"), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
458 "Print pass output to 'llvm::outs()'"),
460 "Print pass output to 'llvm::errs()'"),
462 "Print pass output to 'llvm::dbgs()'")
463 )};
464 ::mlir::Pass::Option<std::string> fieldName{*this, "field", ::llvm::cl::desc(R"PO(The field to use for interval analysis. If supplied, this always overrides the module's detected field. If omitted, the pass first tries to detect a single field from the enclosing module's felt usage and otherwise falls back to bn128. Constants retain their declared-field meaning before reduction in the analysis field; fieldless literals use the analysis field directly. Supported fields: bn128/bn254, babybear, goldilocks, grumpkin, koalabear, mersenne31)PO"), ::llvm::cl::init("")};
465 ::mlir::Pass::Option<bool> propagateInputConstraints{*this, "propagate-input-constraints", ::llvm::cl::desc(R"PO(Whether to propagate constraints on inputs from @constrain to @compute functions. This allows for tighter intervals to possibly be found for computed values, assuming that the witness generator would include constraints as assertions during the computation.)PO"), ::llvm::cl::init(false)};
466 ::mlir::Pass::Option<bool> printSolverConstraints{*this, "print-solver-constraints", ::llvm::cl::desc(R"PO(Whether to output SMT solver constraints along with intervals.)PO"), ::llvm::cl::init(false)};
467 ::mlir::Pass::Option<bool> printComputeIntervals{*this, "print-compute-intervals", ::llvm::cl::desc(R"PO(Whether to print compute function intervals (default only prints constrain function intervals).)PO"), ::llvm::cl::init(false)};
468 ::mlir::Pass::Option<bool> printUnreducedIntervals{*this, "print-unreduced-intervals", ::llvm::cl::desc(R"PO(Whether to print tracked unreduced intervals alongside reduced interval summaries.)PO"), ::llvm::cl::init(false)};
469 ::mlir::Pass::Option<bool> printSSAIntervals{*this, "print-ssa-intervals", ::llvm::cl::desc(R"PO(Whether to print per-SSA intervals for function arguments and scalar op results.)PO"), ::llvm::cl::init(false)};
470private:
471
472 friend std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass() {
473 return std::make_unique<DerivedT>();
474 }
475
476 friend std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass(IntervalAnalysisPrinterPassOptions options) {
477 return std::make_unique<DerivedT>(std::move(options));
478 }
479};
480} // namespace impl
481
482std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass() {
483 return impl::createIntervalAnalysisPrinterPass();
484}
485
486std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass(IntervalAnalysisPrinterPassOptions options) {
487 return impl::createIntervalAnalysisPrinterPass(std::move(options));
488}
489#undef GEN_PASS_DEF_INTERVALANALYSISPRINTERPASS
490#endif // GEN_PASS_DEF_INTERVALANALYSISPRINTERPASS
491
492//===----------------------------------------------------------------------===//
493// PredecessorPrinterPass
494//===----------------------------------------------------------------------===//
495#ifdef GEN_PASS_DECL_PREDECESSORPRINTERPASS
496struct PredecessorPrinterPassOptions {
498 bool preRunRequiredAnalyses = false;
499};
500std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass();
501std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass(PredecessorPrinterPassOptions options);
502#undef GEN_PASS_DECL_PREDECESSORPRINTERPASS
503#endif // GEN_PASS_DECL_PREDECESSORPRINTERPASS
504#ifdef GEN_PASS_DEF_PREDECESSORPRINTERPASS
505
506namespace impl {
507 std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass();
508} // namespace impl
509
510namespace impl {
511 std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass(PredecessorPrinterPassOptions options);
512} // namespace impl
513namespace impl {
514
515template <typename DerivedT>
516class PredecessorPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
517public:
518 using Base = PredecessorPrinterPassBase;
519
520 PredecessorPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
521 PredecessorPrinterPassBase(const PredecessorPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
522 PredecessorPrinterPassBase& operator=(const PredecessorPrinterPassBase &) = delete;
523 PredecessorPrinterPassBase(PredecessorPrinterPassBase &&) = delete;
524 PredecessorPrinterPassBase& operator=(PredecessorPrinterPassBase &&) = delete;
525 ~PredecessorPrinterPassBase() = default;
526
528 static constexpr ::llvm::StringLiteral getArgumentName() {
529 return ::llvm::StringLiteral("llzk-print-predecessors");
530 }
531 ::llvm::StringRef getArgument() const override { return "llzk-print-predecessors"; }
532
533 ::llvm::StringRef getDescription() const override { return R"PD(Print the predecessors of all operations.)PD"; }
534
536 static constexpr ::llvm::StringLiteral getPassName() {
537 return ::llvm::StringLiteral("PredecessorPrinterPass");
538 }
539 ::llvm::StringRef getName() const override { return "PredecessorPrinterPass"; }
540
542 static bool classof(const ::mlir::Pass *pass) {
543 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
544 }
545
547 std::unique_ptr<::mlir::Pass> clonePass() const override {
548 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
549 }
550
552 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
553 registry.insert<llzk::LLZKDialect>();
554 registry.insert<llzk::boolean::BoolDialect>();
555 registry.insert<llzk::array::ArrayDialect>();
556 registry.insert<llzk::component::StructDialect>();
557 registry.insert<llzk::constrain::ConstrainDialect>();
558 registry.insert<llzk::felt::FeltDialect>();
559 registry.insert<llzk::global::GlobalDialect>();
560 registry.insert<llzk::include::IncludeDialect>();
561 registry.insert<llzk::function::FunctionDialect>();
562 registry.insert<llzk::string::StringDialect>();
563 registry.insert<llzk::polymorphic::PolymorphicDialect>();
564 registry.insert<mlir::arith::ArithDialect>();
565 registry.insert<mlir::scf::SCFDialect>();
566 }
567
571 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(PredecessorPrinterPassBase<DerivedT>)
572
573 PredecessorPrinterPassBase(PredecessorPrinterPassOptions options) : PredecessorPrinterPassBase() {
574 outputStream = std::move(options.outputStream);
575 preRunRequiredAnalyses = std::move(options.preRunRequiredAnalyses);
576 }
577protected:
578 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc(R"PO(Specifies the stream to which the pass prints.)PO"), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
580 "Print pass output to 'llvm::outs()'"),
582 "Print pass output to 'llvm::errs()'"),
584 "Print pass output to 'llvm::dbgs()'")
585 )};
586 ::mlir::Pass::Option<bool> preRunRequiredAnalyses{*this, "prerun", ::llvm::cl::desc(R"PO(Whether to pre-run the required dataflow analyses (e.g., liveness analysis).)PO"), ::llvm::cl::init(false)};
587private:
588
589 friend std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass() {
590 return std::make_unique<DerivedT>();
591 }
592
593 friend std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass(PredecessorPrinterPassOptions options) {
594 return std::make_unique<DerivedT>(std::move(options));
595 }
596};
597} // namespace impl
598
599std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass() {
600 return impl::createPredecessorPrinterPass();
601}
602
603std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass(PredecessorPrinterPassOptions options) {
604 return impl::createPredecessorPrinterPass(std::move(options));
605}
606#undef GEN_PASS_DEF_PREDECESSORPRINTERPASS
607#endif // GEN_PASS_DEF_PREDECESSORPRINTERPASS
608
609//===----------------------------------------------------------------------===//
610// SymbolDefTreePrinterPass
611//===----------------------------------------------------------------------===//
612#ifdef GEN_PASS_DECL_SYMBOLDEFTREEPRINTERPASS
613struct SymbolDefTreePrinterPassOptions {
615 bool saveDotGraph = false;
616};
617std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass();
618std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass(SymbolDefTreePrinterPassOptions options);
619#undef GEN_PASS_DECL_SYMBOLDEFTREEPRINTERPASS
620#endif // GEN_PASS_DECL_SYMBOLDEFTREEPRINTERPASS
621#ifdef GEN_PASS_DEF_SYMBOLDEFTREEPRINTERPASS
622
623namespace impl {
624 std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass();
625} // namespace impl
626
627namespace impl {
628 std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass(SymbolDefTreePrinterPassOptions options);
629} // namespace impl
630namespace impl {
631
632template <typename DerivedT>
633class SymbolDefTreePrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
634public:
635 using Base = SymbolDefTreePrinterPassBase;
636
637 SymbolDefTreePrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
638 SymbolDefTreePrinterPassBase(const SymbolDefTreePrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
639 SymbolDefTreePrinterPassBase& operator=(const SymbolDefTreePrinterPassBase &) = delete;
640 SymbolDefTreePrinterPassBase(SymbolDefTreePrinterPassBase &&) = delete;
641 SymbolDefTreePrinterPassBase& operator=(SymbolDefTreePrinterPassBase &&) = delete;
642 ~SymbolDefTreePrinterPassBase() = default;
643
645 static constexpr ::llvm::StringLiteral getArgumentName() {
646 return ::llvm::StringLiteral("llzk-print-symbol-def-tree");
647 }
648 ::llvm::StringRef getArgument() const override { return "llzk-print-symbol-def-tree"; }
649
650 ::llvm::StringRef getDescription() const override { return R"PD(Print symbol definition tree.)PD"; }
651
653 static constexpr ::llvm::StringLiteral getPassName() {
654 return ::llvm::StringLiteral("SymbolDefTreePrinterPass");
655 }
656 ::llvm::StringRef getName() const override { return "SymbolDefTreePrinterPass"; }
657
659 static bool classof(const ::mlir::Pass *pass) {
660 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
661 }
662
664 std::unique_ptr<::mlir::Pass> clonePass() const override {
665 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
666 }
667
669 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
670 registry.insert<llzk::LLZKDialect>();
671 registry.insert<llzk::boolean::BoolDialect>();
672 registry.insert<llzk::array::ArrayDialect>();
673 registry.insert<llzk::component::StructDialect>();
674 registry.insert<llzk::constrain::ConstrainDialect>();
675 registry.insert<llzk::felt::FeltDialect>();
676 registry.insert<llzk::global::GlobalDialect>();
677 registry.insert<llzk::include::IncludeDialect>();
678 registry.insert<llzk::function::FunctionDialect>();
679 registry.insert<llzk::string::StringDialect>();
680 registry.insert<llzk::polymorphic::PolymorphicDialect>();
681 registry.insert<mlir::arith::ArithDialect>();
682 registry.insert<mlir::scf::SCFDialect>();
683 }
684
688 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(SymbolDefTreePrinterPassBase<DerivedT>)
689
690 SymbolDefTreePrinterPassBase(SymbolDefTreePrinterPassOptions options) : SymbolDefTreePrinterPassBase() {
691 outputStream = std::move(options.outputStream);
692 saveDotGraph = std::move(options.saveDotGraph);
693 }
694protected:
695 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc(R"PO(Specifies the stream to which the pass prints.)PO"), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
697 "Print pass output to 'llvm::outs()'"),
699 "Print pass output to 'llvm::errs()'"),
701 "Print pass output to 'llvm::dbgs()'")
702 )};
703 ::mlir::Pass::Option<bool> saveDotGraph{*this, "saveDot", ::llvm::cl::desc(R"PO(Whether to dump the graph to DOT format.)PO"), ::llvm::cl::init(false)};
704private:
705
706 friend std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass() {
707 return std::make_unique<DerivedT>();
708 }
709
710 friend std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass(SymbolDefTreePrinterPassOptions options) {
711 return std::make_unique<DerivedT>(std::move(options));
712 }
713};
714} // namespace impl
715
716std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass() {
717 return impl::createSymbolDefTreePrinterPass();
718}
719
720std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass(SymbolDefTreePrinterPassOptions options) {
721 return impl::createSymbolDefTreePrinterPass(std::move(options));
722}
723#undef GEN_PASS_DEF_SYMBOLDEFTREEPRINTERPASS
724#endif // GEN_PASS_DEF_SYMBOLDEFTREEPRINTERPASS
725
726//===----------------------------------------------------------------------===//
727// SymbolUseGraphPrinterPass
728//===----------------------------------------------------------------------===//
729#ifdef GEN_PASS_DECL_SYMBOLUSEGRAPHPRINTERPASS
730struct SymbolUseGraphPrinterPassOptions {
732 bool saveDotGraph = false;
733};
734std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass();
735std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass(SymbolUseGraphPrinterPassOptions options);
736#undef GEN_PASS_DECL_SYMBOLUSEGRAPHPRINTERPASS
737#endif // GEN_PASS_DECL_SYMBOLUSEGRAPHPRINTERPASS
738#ifdef GEN_PASS_DEF_SYMBOLUSEGRAPHPRINTERPASS
739
740namespace impl {
741 std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass();
742} // namespace impl
743
744namespace impl {
745 std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass(SymbolUseGraphPrinterPassOptions options);
746} // namespace impl
747namespace impl {
748
749template <typename DerivedT>
750class SymbolUseGraphPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
751public:
752 using Base = SymbolUseGraphPrinterPassBase;
753
754 SymbolUseGraphPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
755 SymbolUseGraphPrinterPassBase(const SymbolUseGraphPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
756 SymbolUseGraphPrinterPassBase& operator=(const SymbolUseGraphPrinterPassBase &) = delete;
757 SymbolUseGraphPrinterPassBase(SymbolUseGraphPrinterPassBase &&) = delete;
758 SymbolUseGraphPrinterPassBase& operator=(SymbolUseGraphPrinterPassBase &&) = delete;
759 ~SymbolUseGraphPrinterPassBase() = default;
760
762 static constexpr ::llvm::StringLiteral getArgumentName() {
763 return ::llvm::StringLiteral("llzk-print-symbol-use-graph");
764 }
765 ::llvm::StringRef getArgument() const override { return "llzk-print-symbol-use-graph"; }
766
767 ::llvm::StringRef getDescription() const override { return R"PD(Print symbol use graph.)PD"; }
768
770 static constexpr ::llvm::StringLiteral getPassName() {
771 return ::llvm::StringLiteral("SymbolUseGraphPrinterPass");
772 }
773 ::llvm::StringRef getName() const override { return "SymbolUseGraphPrinterPass"; }
774
776 static bool classof(const ::mlir::Pass *pass) {
777 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
778 }
779
781 std::unique_ptr<::mlir::Pass> clonePass() const override {
782 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
783 }
784
786 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
787 registry.insert<llzk::LLZKDialect>();
788 registry.insert<llzk::boolean::BoolDialect>();
789 registry.insert<llzk::array::ArrayDialect>();
790 registry.insert<llzk::component::StructDialect>();
791 registry.insert<llzk::constrain::ConstrainDialect>();
792 registry.insert<llzk::felt::FeltDialect>();
793 registry.insert<llzk::global::GlobalDialect>();
794 registry.insert<llzk::include::IncludeDialect>();
795 registry.insert<llzk::function::FunctionDialect>();
796 registry.insert<llzk::string::StringDialect>();
797 registry.insert<llzk::polymorphic::PolymorphicDialect>();
798 registry.insert<mlir::arith::ArithDialect>();
799 registry.insert<mlir::scf::SCFDialect>();
800 }
801
805 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(SymbolUseGraphPrinterPassBase<DerivedT>)
806
807 SymbolUseGraphPrinterPassBase(SymbolUseGraphPrinterPassOptions options) : SymbolUseGraphPrinterPassBase() {
808 outputStream = std::move(options.outputStream);
809 saveDotGraph = std::move(options.saveDotGraph);
810 }
811protected:
812 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc(R"PO(Specifies the stream to which the pass prints.)PO"), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
814 "Print pass output to 'llvm::outs()'"),
816 "Print pass output to 'llvm::errs()'"),
818 "Print pass output to 'llvm::dbgs()'")
819 )};
820 ::mlir::Pass::Option<bool> saveDotGraph{*this, "saveDot", ::llvm::cl::desc(R"PO(Whether to dump the graph to DOT format.)PO"), ::llvm::cl::init(false)};
821private:
822
823 friend std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass() {
824 return std::make_unique<DerivedT>();
825 }
826
827 friend std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass(SymbolUseGraphPrinterPassOptions options) {
828 return std::make_unique<DerivedT>(std::move(options));
829 }
830};
831} // namespace impl
832
833std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass() {
834 return impl::createSymbolUseGraphPrinterPass();
835}
836
837std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass(SymbolUseGraphPrinterPassOptions options) {
838 return impl::createSymbolUseGraphPrinterPass(std::move(options));
839}
840#undef GEN_PASS_DEF_SYMBOLUSEGRAPHPRINTERPASS
841#endif // GEN_PASS_DEF_SYMBOLUSEGRAPHPRINTERPASS
842#ifdef GEN_PASS_REGISTRATION
843// Generate registrations for all passes.
844#define GEN_PASS_REGISTRATION_CALLGRAPHPRINTERPASS
845#define GEN_PASS_REGISTRATION_CALLGRAPHSCCSPRINTERPASS
846#define GEN_PASS_REGISTRATION_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
847#define GEN_PASS_REGISTRATION_INTERVALANALYSISPRINTERPASS
848#define GEN_PASS_REGISTRATION_PREDECESSORPRINTERPASS
849#define GEN_PASS_REGISTRATION_SYMBOLDEFTREEPRINTERPASS
850#define GEN_PASS_REGISTRATION_SYMBOLUSEGRAPHPRINTERPASS
851#endif // GEN_PASS_REGISTRATION
852
853//===----------------------------------------------------------------------===//
854// CallGraphPrinterPass Registration
855//===----------------------------------------------------------------------===//
856#ifdef GEN_PASS_REGISTRATION_CALLGRAPHPRINTERPASS
857
858inline void registerCallGraphPrinterPass() {
859 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
861 });
862}
863
864// Old registration code, kept for temporary backwards compatibility.
866 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
868 });
869}
870
871#undef GEN_PASS_REGISTRATION_CALLGRAPHPRINTERPASS
872#endif // GEN_PASS_REGISTRATION_CALLGRAPHPRINTERPASS
873
874//===----------------------------------------------------------------------===//
875// CallGraphSCCsPrinterPass Registration
876//===----------------------------------------------------------------------===//
877#ifdef GEN_PASS_REGISTRATION_CALLGRAPHSCCSPRINTERPASS
878
880 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
882 });
883}
884
885// Old registration code, kept for temporary backwards compatibility.
887 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
889 });
890}
891
892#undef GEN_PASS_REGISTRATION_CALLGRAPHSCCSPRINTERPASS
893#endif // GEN_PASS_REGISTRATION_CALLGRAPHSCCSPRINTERPASS
894
895//===----------------------------------------------------------------------===//
896// ConstraintDependencyGraphPrinterPass Registration
897//===----------------------------------------------------------------------===//
898#ifdef GEN_PASS_REGISTRATION_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
899
901 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
903 });
904}
905
906// Old registration code, kept for temporary backwards compatibility.
908 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
910 });
911}
912
913#undef GEN_PASS_REGISTRATION_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
914#endif // GEN_PASS_REGISTRATION_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
915
916//===----------------------------------------------------------------------===//
917// IntervalAnalysisPrinterPass Registration
918//===----------------------------------------------------------------------===//
919#ifdef GEN_PASS_REGISTRATION_INTERVALANALYSISPRINTERPASS
920
922 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
924 });
925}
926
927// Old registration code, kept for temporary backwards compatibility.
929 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
931 });
932}
933
934#undef GEN_PASS_REGISTRATION_INTERVALANALYSISPRINTERPASS
935#endif // GEN_PASS_REGISTRATION_INTERVALANALYSISPRINTERPASS
936
937//===----------------------------------------------------------------------===//
938// PredecessorPrinterPass Registration
939//===----------------------------------------------------------------------===//
940#ifdef GEN_PASS_REGISTRATION_PREDECESSORPRINTERPASS
941
942inline void registerPredecessorPrinterPass() {
943 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
945 });
946}
947
948// Old registration code, kept for temporary backwards compatibility.
950 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
952 });
953}
954
955#undef GEN_PASS_REGISTRATION_PREDECESSORPRINTERPASS
956#endif // GEN_PASS_REGISTRATION_PREDECESSORPRINTERPASS
957
958//===----------------------------------------------------------------------===//
959// SymbolDefTreePrinterPass Registration
960//===----------------------------------------------------------------------===//
961#ifdef GEN_PASS_REGISTRATION_SYMBOLDEFTREEPRINTERPASS
962
964 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
966 });
967}
968
969// Old registration code, kept for temporary backwards compatibility.
971 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
973 });
974}
975
976#undef GEN_PASS_REGISTRATION_SYMBOLDEFTREEPRINTERPASS
977#endif // GEN_PASS_REGISTRATION_SYMBOLDEFTREEPRINTERPASS
978
979//===----------------------------------------------------------------------===//
980// SymbolUseGraphPrinterPass Registration
981//===----------------------------------------------------------------------===//
982#ifdef GEN_PASS_REGISTRATION_SYMBOLUSEGRAPHPRINTERPASS
983
985 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
987 });
988}
989
990// Old registration code, kept for temporary backwards compatibility.
992 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
994 });
995}
996
997#undef GEN_PASS_REGISTRATION_SYMBOLUSEGRAPHPRINTERPASS
998#endif // GEN_PASS_REGISTRATION_SYMBOLUSEGRAPHPRINTERPASS
999#ifdef GEN_PASS_REGISTRATION
1000
1001//===----------------------------------------------------------------------===//
1002// Analysis Registration
1003//===----------------------------------------------------------------------===//
1004
1005inline void registerAnalysisPasses() {
1013}
1014#undef GEN_PASS_REGISTRATION
1015#endif // GEN_PASS_REGISTRATION
1016#ifdef GEN_PASS_CLASSES
1017#error "GEN_PASS_CLASSES is deprecated; use per-pass macros"
1018#undef GEN_PASS_CLASSES
1019#endif // GEN_PASS_CLASSES
std::unique_ptr<::mlir::Pass > createConstraintDependencyGraphPrinterPass()
std::unique_ptr<::mlir::Pass > createPredecessorPrinterPass()
std::unique_ptr<::mlir::Pass > createSymbolUseGraphPrinterPass()
std::unique_ptr<::mlir::Pass > createIntervalAnalysisPrinterPass()
std::unique_ptr<::mlir::Pass > createCallGraphSCCsPrinterPass()
std::unique_ptr<::mlir::Pass > createSymbolDefTreePrinterPass()
std::unique_ptr<::mlir::Pass > createCallGraphPrinterPass()
void registerIntervalAnalysisPrinterPassPass()
void registerSymbolDefTreePrinterPassPass()
void registerPredecessorPrinterPassPass()
void registerIntervalAnalysisPrinterPass()
void registerSymbolUseGraphPrinterPassPass()
void registerCallGraphPrinterPass()
void registerConstraintDependencyGraphPrinterPass()
void registerSymbolUseGraphPrinterPass()
void registerCallGraphPrinterPassPass()
::llvm::StringRef stringifyOutputStream(OutputStream val)
void registerPredecessorPrinterPass()
void registerCallGraphSCCsPrinterPass()
void registerConstraintDependencyGraphPrinterPassPass()
void registerCallGraphSCCsPrinterPassPass()
void registerAnalysisPasses()
void registerSymbolDefTreePrinterPass()