5#define GEN_PASS_DECL_CALLGRAPHPRINTERPASS
6#define GEN_PASS_DECL_CALLGRAPHSCCSPRINTERPASS
7#define GEN_PASS_DECL_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
8#define GEN_PASS_DECL_INTERVALANALYSISPRINTERPASS
15#ifdef GEN_PASS_DECL_CALLGRAPHPRINTERPASS
16#undef GEN_PASS_DECL_CALLGRAPHPRINTERPASS
18#ifdef GEN_PASS_DEF_CALLGRAPHPRINTERPASS
21template <
typename DerivedT>
22class CallGraphPrinterPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
24 using Base = CallGraphPrinterPassBase;
26 CallGraphPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
27 CallGraphPrinterPassBase(
const CallGraphPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
30 static constexpr ::llvm::StringLiteral getArgumentName() {
31 return ::llvm::StringLiteral(
"llzk-print-call-graph");
33 ::llvm::StringRef getArgument()
const override {
return "llzk-print-call-graph"; }
35 ::llvm::StringRef getDescription()
const override {
return "Print the LLZK module's call graph."; }
38 static constexpr ::llvm::StringLiteral getPassName() {
39 return ::llvm::StringLiteral(
"CallGraphPrinterPass");
41 ::llvm::StringRef getName()
const override {
return "CallGraphPrinterPass"; }
44 static bool classof(const ::mlir::Pass *pass) {
45 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
49 std::unique_ptr<::mlir::Pass> clonePass()
const override {
50 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
54 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
55 registry.insert<llzk::LLZKDialect>();
56 registry.insert<llzk::boolean::BoolDialect>();
57 registry.insert<llzk::array::ArrayDialect>();
58 registry.insert<llzk::component::StructDialect>();
59 registry.insert<llzk::constrain::ConstrainDialect>();
60 registry.insert<llzk::felt::FeltDialect>();
61 registry.insert<llzk::global::GlobalDialect>();
62 registry.insert<llzk::include::IncludeDialect>();
63 registry.insert<llzk::function::FunctionDialect>();
64 registry.insert<llzk::string::StringDialect>();
65 registry.insert<llzk::polymorphic::PolymorphicDialect>();
66 registry.insert<llzk::undef::UndefDialect>();
67 registry.insert<mlir::arith::ArithDialect>();
68 registry.insert<mlir::scf::SCFDialect>();
74 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(CallGraphPrinterPassBase<DerivedT>)
80#undef GEN_PASS_DEF_CALLGRAPHPRINTERPASS
86#ifdef GEN_PASS_DECL_CALLGRAPHSCCSPRINTERPASS
87#undef GEN_PASS_DECL_CALLGRAPHSCCSPRINTERPASS
89#ifdef GEN_PASS_DEF_CALLGRAPHSCCSPRINTERPASS
92template <
typename DerivedT>
93class CallGraphSCCsPrinterPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
95 using Base = CallGraphSCCsPrinterPassBase;
97 CallGraphSCCsPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
98 CallGraphSCCsPrinterPassBase(
const CallGraphSCCsPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
101 static constexpr ::llvm::StringLiteral getArgumentName() {
102 return ::llvm::StringLiteral(
"llzk-print-call-graph-sccs");
104 ::llvm::StringRef getArgument()
const override {
return "llzk-print-call-graph-sccs"; }
106 ::llvm::StringRef getDescription()
const override {
return "Print the SCCs from the LLZK module's call graph."; }
109 static constexpr ::llvm::StringLiteral getPassName() {
110 return ::llvm::StringLiteral(
"CallGraphSCCsPrinterPass");
112 ::llvm::StringRef getName()
const override {
return "CallGraphSCCsPrinterPass"; }
115 static bool classof(const ::mlir::Pass *pass) {
116 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
120 std::unique_ptr<::mlir::Pass> clonePass()
const override {
121 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
125 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
126 registry.insert<llzk::LLZKDialect>();
127 registry.insert<llzk::boolean::BoolDialect>();
128 registry.insert<llzk::array::ArrayDialect>();
129 registry.insert<llzk::component::StructDialect>();
130 registry.insert<llzk::constrain::ConstrainDialect>();
131 registry.insert<llzk::felt::FeltDialect>();
132 registry.insert<llzk::global::GlobalDialect>();
133 registry.insert<llzk::include::IncludeDialect>();
134 registry.insert<llzk::function::FunctionDialect>();
135 registry.insert<llzk::string::StringDialect>();
136 registry.insert<llzk::polymorphic::PolymorphicDialect>();
137 registry.insert<llzk::undef::UndefDialect>();
138 registry.insert<mlir::arith::ArithDialect>();
139 registry.insert<mlir::scf::SCFDialect>();
145 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(CallGraphSCCsPrinterPassBase<DerivedT>)
151#undef GEN_PASS_DEF_CALLGRAPHSCCSPRINTERPASS
157#ifdef GEN_PASS_DECL_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
158#undef GEN_PASS_DECL_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
160#ifdef GEN_PASS_DEF_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
163template <
typename DerivedT>
164class ConstraintDependencyGraphPrinterPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
166 using Base = ConstraintDependencyGraphPrinterPassBase;
168 ConstraintDependencyGraphPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
169 ConstraintDependencyGraphPrinterPassBase(
const ConstraintDependencyGraphPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
172 static constexpr ::llvm::StringLiteral getArgumentName() {
173 return ::llvm::StringLiteral(
"llzk-print-constraint-dependency-graphs");
175 ::llvm::StringRef getArgument()
const override {
return "llzk-print-constraint-dependency-graphs"; }
177 ::llvm::StringRef getDescription()
const override {
return "Print constraint dependency graph for all LLZK structs."; }
180 static constexpr ::llvm::StringLiteral getPassName() {
181 return ::llvm::StringLiteral(
"ConstraintDependencyGraphPrinterPass");
183 ::llvm::StringRef getName()
const override {
return "ConstraintDependencyGraphPrinterPass"; }
186 static bool classof(const ::mlir::Pass *pass) {
187 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
191 std::unique_ptr<::mlir::Pass> clonePass()
const override {
192 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
196 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
197 registry.insert<llzk::LLZKDialect>();
198 registry.insert<llzk::boolean::BoolDialect>();
199 registry.insert<llzk::array::ArrayDialect>();
200 registry.insert<llzk::component::StructDialect>();
201 registry.insert<llzk::constrain::ConstrainDialect>();
202 registry.insert<llzk::felt::FeltDialect>();
203 registry.insert<llzk::global::GlobalDialect>();
204 registry.insert<llzk::include::IncludeDialect>();
205 registry.insert<llzk::function::FunctionDialect>();
206 registry.insert<llzk::string::StringDialect>();
207 registry.insert<llzk::polymorphic::PolymorphicDialect>();
208 registry.insert<llzk::undef::UndefDialect>();
209 registry.insert<mlir::arith::ArithDialect>();
210 registry.insert<mlir::scf::SCFDialect>();
216 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(ConstraintDependencyGraphPrinterPassBase<DerivedT>)
222#undef GEN_PASS_DEF_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
228#ifdef GEN_PASS_DECL_INTERVALANALYSISPRINTERPASS
229struct IntervalAnalysisPrinterPassOptions {
230 std::string fieldName =
"bn128";
231 bool printSolverConstraints =
false;
233#undef GEN_PASS_DECL_INTERVALANALYSISPRINTERPASS
235#ifdef GEN_PASS_DEF_INTERVALANALYSISPRINTERPASS
238template <
typename DerivedT>
239class IntervalAnalysisPrinterPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
241 using Base = IntervalAnalysisPrinterPassBase;
243 IntervalAnalysisPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
244 IntervalAnalysisPrinterPassBase(
const IntervalAnalysisPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
247 static constexpr ::llvm::StringLiteral getArgumentName() {
248 return ::llvm::StringLiteral(
"llzk-print-interval-analysis");
250 ::llvm::StringRef getArgument()
const override {
return "llzk-print-interval-analysis"; }
252 ::llvm::StringRef getDescription()
const override {
return "Print interval analysis results for all LLZK structs."; }
255 static constexpr ::llvm::StringLiteral getPassName() {
256 return ::llvm::StringLiteral(
"IntervalAnalysisPrinterPass");
258 ::llvm::StringRef getName()
const override {
return "IntervalAnalysisPrinterPass"; }
261 static bool classof(const ::mlir::Pass *pass) {
262 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
266 std::unique_ptr<::mlir::Pass> clonePass()
const override {
267 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
271 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
272 registry.insert<llzk::LLZKDialect>();
273 registry.insert<llzk::boolean::BoolDialect>();
274 registry.insert<llzk::array::ArrayDialect>();
275 registry.insert<llzk::component::StructDialect>();
276 registry.insert<llzk::constrain::ConstrainDialect>();
277 registry.insert<llzk::felt::FeltDialect>();
278 registry.insert<llzk::global::GlobalDialect>();
279 registry.insert<llzk::include::IncludeDialect>();
280 registry.insert<llzk::function::FunctionDialect>();
281 registry.insert<llzk::string::StringDialect>();
282 registry.insert<llzk::polymorphic::PolymorphicDialect>();
283 registry.insert<llzk::undef::UndefDialect>();
284 registry.insert<mlir::arith::ArithDialect>();
285 registry.insert<mlir::scf::SCFDialect>();
291 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(IntervalAnalysisPrinterPassBase<DerivedT>)
293 IntervalAnalysisPrinterPassBase(
const IntervalAnalysisPrinterPassOptions &options) : IntervalAnalysisPrinterPassBase() {
294 fieldName = options.fieldName;
295 printSolverConstraints = options.printSolverConstraints;
298 ::mlir::Pass::Option<std::string> fieldName{*
this,
"field", ::llvm::cl::desc(
"The field to use for interval analysis. Supported fields: bn128/bn254, babybear, goldilocks, mersenne31"), ::llvm::cl::init(
"bn128")};
299 ::mlir::Pass::Option<bool> printSolverConstraints{*
this,
"print-solver-constraints", ::llvm::cl::desc(
"Whether to output SMT solver constraints along with intervals."), ::llvm::cl::init(
false)};
303#undef GEN_PASS_DEF_INTERVALANALYSISPRINTERPASS
305#ifdef GEN_PASS_REGISTRATION
312 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
319 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
329 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
336 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
346 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
353 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
363 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
370 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
385#undef GEN_PASS_REGISTRATION
388#ifdef GEN_PASS_CLASSES
390template <
typename DerivedT>
391class CallGraphPrinterPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
393 using Base = CallGraphPrinterPassBase;
395 CallGraphPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
396 CallGraphPrinterPassBase(
const CallGraphPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
399 static constexpr ::llvm::StringLiteral getArgumentName() {
400 return ::llvm::StringLiteral(
"llzk-print-call-graph");
402 ::llvm::StringRef getArgument()
const override {
return "llzk-print-call-graph"; }
404 ::llvm::StringRef getDescription()
const override {
return "Print the LLZK module's call graph."; }
407 static constexpr ::llvm::StringLiteral getPassName() {
408 return ::llvm::StringLiteral(
"CallGraphPrinterPass");
410 ::llvm::StringRef getName()
const override {
return "CallGraphPrinterPass"; }
413 static bool classof(const ::mlir::Pass *pass) {
414 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
418 std::unique_ptr<::mlir::Pass> clonePass()
const override {
419 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
423 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
424 registry.insert<llzk::LLZKDialect>();
425 registry.insert<llzk::boolean::BoolDialect>();
426 registry.insert<llzk::array::ArrayDialect>();
427 registry.insert<llzk::component::StructDialect>();
428 registry.insert<llzk::constrain::ConstrainDialect>();
429 registry.insert<llzk::felt::FeltDialect>();
430 registry.insert<llzk::global::GlobalDialect>();
431 registry.insert<llzk::include::IncludeDialect>();
432 registry.insert<llzk::function::FunctionDialect>();
433 registry.insert<llzk::string::StringDialect>();
434 registry.insert<llzk::polymorphic::PolymorphicDialect>();
435 registry.insert<llzk::undef::UndefDialect>();
436 registry.insert<mlir::arith::ArithDialect>();
437 registry.insert<mlir::scf::SCFDialect>();
443 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(CallGraphPrinterPassBase<DerivedT>)
448template <
typename DerivedT>
449class CallGraphSCCsPrinterPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
451 using Base = CallGraphSCCsPrinterPassBase;
453 CallGraphSCCsPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
454 CallGraphSCCsPrinterPassBase(
const CallGraphSCCsPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
457 static constexpr ::llvm::StringLiteral getArgumentName() {
458 return ::llvm::StringLiteral(
"llzk-print-call-graph-sccs");
460 ::llvm::StringRef getArgument()
const override {
return "llzk-print-call-graph-sccs"; }
462 ::llvm::StringRef getDescription()
const override {
return "Print the SCCs from the LLZK module's call graph."; }
465 static constexpr ::llvm::StringLiteral getPassName() {
466 return ::llvm::StringLiteral(
"CallGraphSCCsPrinterPass");
468 ::llvm::StringRef getName()
const override {
return "CallGraphSCCsPrinterPass"; }
471 static bool classof(const ::mlir::Pass *pass) {
472 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
476 std::unique_ptr<::mlir::Pass> clonePass()
const override {
477 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
481 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
482 registry.insert<llzk::LLZKDialect>();
483 registry.insert<llzk::boolean::BoolDialect>();
484 registry.insert<llzk::array::ArrayDialect>();
485 registry.insert<llzk::component::StructDialect>();
486 registry.insert<llzk::constrain::ConstrainDialect>();
487 registry.insert<llzk::felt::FeltDialect>();
488 registry.insert<llzk::global::GlobalDialect>();
489 registry.insert<llzk::include::IncludeDialect>();
490 registry.insert<llzk::function::FunctionDialect>();
491 registry.insert<llzk::string::StringDialect>();
492 registry.insert<llzk::polymorphic::PolymorphicDialect>();
493 registry.insert<llzk::undef::UndefDialect>();
494 registry.insert<mlir::arith::ArithDialect>();
495 registry.insert<mlir::scf::SCFDialect>();
501 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(CallGraphSCCsPrinterPassBase<DerivedT>)
506template <
typename DerivedT>
507class ConstraintDependencyGraphPrinterPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
509 using Base = ConstraintDependencyGraphPrinterPassBase;
511 ConstraintDependencyGraphPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
512 ConstraintDependencyGraphPrinterPassBase(
const ConstraintDependencyGraphPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
515 static constexpr ::llvm::StringLiteral getArgumentName() {
516 return ::llvm::StringLiteral(
"llzk-print-constraint-dependency-graphs");
518 ::llvm::StringRef getArgument()
const override {
return "llzk-print-constraint-dependency-graphs"; }
520 ::llvm::StringRef getDescription()
const override {
return "Print constraint dependency graph for all LLZK structs."; }
523 static constexpr ::llvm::StringLiteral getPassName() {
524 return ::llvm::StringLiteral(
"ConstraintDependencyGraphPrinterPass");
526 ::llvm::StringRef getName()
const override {
return "ConstraintDependencyGraphPrinterPass"; }
529 static bool classof(const ::mlir::Pass *pass) {
530 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
534 std::unique_ptr<::mlir::Pass> clonePass()
const override {
535 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
539 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
540 registry.insert<llzk::LLZKDialect>();
541 registry.insert<llzk::boolean::BoolDialect>();
542 registry.insert<llzk::array::ArrayDialect>();
543 registry.insert<llzk::component::StructDialect>();
544 registry.insert<llzk::constrain::ConstrainDialect>();
545 registry.insert<llzk::felt::FeltDialect>();
546 registry.insert<llzk::global::GlobalDialect>();
547 registry.insert<llzk::include::IncludeDialect>();
548 registry.insert<llzk::function::FunctionDialect>();
549 registry.insert<llzk::string::StringDialect>();
550 registry.insert<llzk::polymorphic::PolymorphicDialect>();
551 registry.insert<llzk::undef::UndefDialect>();
552 registry.insert<mlir::arith::ArithDialect>();
553 registry.insert<mlir::scf::SCFDialect>();
559 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(ConstraintDependencyGraphPrinterPassBase<DerivedT>)
564template <
typename DerivedT>
565class IntervalAnalysisPrinterPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
567 using Base = IntervalAnalysisPrinterPassBase;
569 IntervalAnalysisPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
570 IntervalAnalysisPrinterPassBase(
const IntervalAnalysisPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
573 static constexpr ::llvm::StringLiteral getArgumentName() {
574 return ::llvm::StringLiteral(
"llzk-print-interval-analysis");
576 ::llvm::StringRef getArgument()
const override {
return "llzk-print-interval-analysis"; }
578 ::llvm::StringRef getDescription()
const override {
return "Print interval analysis results for all LLZK structs."; }
581 static constexpr ::llvm::StringLiteral getPassName() {
582 return ::llvm::StringLiteral(
"IntervalAnalysisPrinterPass");
584 ::llvm::StringRef getName()
const override {
return "IntervalAnalysisPrinterPass"; }
587 static bool classof(const ::mlir::Pass *pass) {
588 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
592 std::unique_ptr<::mlir::Pass> clonePass()
const override {
593 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
597 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
598 registry.insert<llzk::LLZKDialect>();
599 registry.insert<llzk::boolean::BoolDialect>();
600 registry.insert<llzk::array::ArrayDialect>();
601 registry.insert<llzk::component::StructDialect>();
602 registry.insert<llzk::constrain::ConstrainDialect>();
603 registry.insert<llzk::felt::FeltDialect>();
604 registry.insert<llzk::global::GlobalDialect>();
605 registry.insert<llzk::include::IncludeDialect>();
606 registry.insert<llzk::function::FunctionDialect>();
607 registry.insert<llzk::string::StringDialect>();
608 registry.insert<llzk::polymorphic::PolymorphicDialect>();
609 registry.insert<llzk::undef::UndefDialect>();
610 registry.insert<mlir::arith::ArithDialect>();
611 registry.insert<mlir::scf::SCFDialect>();
617 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(IntervalAnalysisPrinterPassBase<DerivedT>)
620 ::mlir::Pass::Option<std::string> fieldName{*
this,
"field", ::llvm::cl::desc(
"The field to use for interval analysis. Supported fields: bn128/bn254, babybear, goldilocks, mersenne31"), ::llvm::cl::init(
"bn128")};
621 ::mlir::Pass::Option<bool> printSolverConstraints{*
this,
"print-solver-constraints", ::llvm::cl::desc(
"Whether to output SMT solver constraints along with intervals."), ::llvm::cl::init(
false)};
623#undef GEN_PASS_CLASSES
void registerIntervalAnalysisPrinterPassPass()
void registerIntervalAnalysisPrinterPass()
std::unique_ptr< mlir::Pass > createConstraintDependencyGraphPrinterPass(llvm::raw_ostream &os=llvm::errs())
std::unique_ptr< mlir::Pass > createIntervalAnalysisPrinterPass(llvm::raw_ostream &os=llvm::errs())
void registerCallGraphPrinterPass()
void registerConstraintDependencyGraphPrinterPass()
std::unique_ptr< mlir::Pass > createCallGraphSCCsPrinterPass(llvm::raw_ostream &os=llvm::errs())
std::unique_ptr< mlir::Pass > createCallGraphPrinterPass(llvm::raw_ostream &os=llvm::errs())
void registerCallGraphPrinterPassPass()
void registerCallGraphSCCsPrinterPass()
void registerConstraintDependencyGraphPrinterPassPass()
void registerCallGraphSCCsPrinterPassPass()
void registerAnalysisPasses()