5#define GEN_PASS_DECL_MEMBERWRITEVALIDATORPASS
12#ifdef GEN_PASS_DECL_MEMBERWRITEVALIDATORPASS
13#undef GEN_PASS_DECL_MEMBERWRITEVALIDATORPASS
15#ifdef GEN_PASS_DEF_MEMBERWRITEVALIDATORPASS
18template <
typename DerivedT>
19class MemberWriteValidatorPassBase :
public ::mlir::OperationPass<::llzk::component::StructDefOp> {
21 using Base = MemberWriteValidatorPassBase;
23 MemberWriteValidatorPassBase() : ::mlir::OperationPass<::llzk::component::StructDefOp>(::mlir::TypeID::get<DerivedT>()) {}
24 MemberWriteValidatorPassBase(
const MemberWriteValidatorPassBase &other) : ::mlir::OperationPass<::llzk::component::StructDefOp>(other) {}
25 MemberWriteValidatorPassBase& operator=(
const MemberWriteValidatorPassBase &) =
delete;
26 MemberWriteValidatorPassBase(MemberWriteValidatorPassBase &&) =
delete;
27 MemberWriteValidatorPassBase& operator=(MemberWriteValidatorPassBase &&) =
delete;
28 ~MemberWriteValidatorPassBase() =
default;
31 static constexpr ::llvm::StringLiteral getArgumentName() {
32 return ::llvm::StringLiteral(
"llzk-validate-member-writes");
34 ::llvm::StringRef getArgument()
const override {
return "llzk-validate-member-writes"; }
36 ::llvm::StringRef getDescription()
const override {
return "Detect multiple and missing writes to the same member of a component."; }
39 static constexpr ::llvm::StringLiteral getPassName() {
40 return ::llvm::StringLiteral(
"MemberWriteValidatorPass");
42 ::llvm::StringRef getName()
const override {
return "MemberWriteValidatorPass"; }
45 static bool classof(const ::mlir::Pass *pass) {
46 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
50 std::unique_ptr<::mlir::Pass> clonePass()
const override {
51 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
55 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
56 registry.insert<llzk::LLZKDialect>();
57 registry.insert<llzk::boolean::BoolDialect>();
58 registry.insert<llzk::array::ArrayDialect>();
59 registry.insert<llzk::component::StructDialect>();
60 registry.insert<llzk::constrain::ConstrainDialect>();
61 registry.insert<llzk::felt::FeltDialect>();
62 registry.insert<llzk::global::GlobalDialect>();
63 registry.insert<llzk::include::IncludeDialect>();
64 registry.insert<llzk::function::FunctionDialect>();
65 registry.insert<llzk::string::StringDialect>();
66 registry.insert<llzk::polymorphic::PolymorphicDialect>();
67 registry.insert<mlir::arith::ArithDialect>();
68 registry.insert<mlir::scf::SCFDialect>();
74 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(MemberWriteValidatorPassBase<DerivedT>)
80#undef GEN_PASS_DEF_MEMBERWRITEVALIDATORPASS
82#ifdef GEN_PASS_REGISTRATION
89 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
96 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
108#undef GEN_PASS_REGISTRATION
111#ifdef GEN_PASS_CLASSES
113template <
typename DerivedT>
114class MemberWriteValidatorPassBase :
public ::mlir::OperationPass<::llzk::component::StructDefOp> {
116 using Base = MemberWriteValidatorPassBase;
118 MemberWriteValidatorPassBase() : ::mlir::OperationPass<::llzk::component::StructDefOp>(::mlir::TypeID::get<DerivedT>()) {}
119 MemberWriteValidatorPassBase(
const MemberWriteValidatorPassBase &other) : ::mlir::OperationPass<::llzk::component::StructDefOp>(other) {}
120 MemberWriteValidatorPassBase& operator=(
const MemberWriteValidatorPassBase &) =
delete;
121 MemberWriteValidatorPassBase(MemberWriteValidatorPassBase &&) =
delete;
122 MemberWriteValidatorPassBase& operator=(MemberWriteValidatorPassBase &&) =
delete;
123 ~MemberWriteValidatorPassBase() =
default;
126 static constexpr ::llvm::StringLiteral getArgumentName() {
127 return ::llvm::StringLiteral(
"llzk-validate-member-writes");
129 ::llvm::StringRef getArgument()
const override {
return "llzk-validate-member-writes"; }
131 ::llvm::StringRef getDescription()
const override {
return "Detect multiple and missing writes to the same member of a component."; }
134 static constexpr ::llvm::StringLiteral getPassName() {
135 return ::llvm::StringLiteral(
"MemberWriteValidatorPass");
137 ::llvm::StringRef getName()
const override {
return "MemberWriteValidatorPass"; }
140 static bool classof(const ::mlir::Pass *pass) {
141 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
145 std::unique_ptr<::mlir::Pass> clonePass()
const override {
146 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
150 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
151 registry.insert<llzk::LLZKDialect>();
152 registry.insert<llzk::boolean::BoolDialect>();
153 registry.insert<llzk::array::ArrayDialect>();
154 registry.insert<llzk::component::StructDialect>();
155 registry.insert<llzk::constrain::ConstrainDialect>();
156 registry.insert<llzk::felt::FeltDialect>();
157 registry.insert<llzk::global::GlobalDialect>();
158 registry.insert<llzk::include::IncludeDialect>();
159 registry.insert<llzk::function::FunctionDialect>();
160 registry.insert<llzk::string::StringDialect>();
161 registry.insert<llzk::polymorphic::PolymorphicDialect>();
162 registry.insert<mlir::arith::ArithDialect>();
163 registry.insert<mlir::scf::SCFDialect>();
169 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(MemberWriteValidatorPassBase<DerivedT>)
173#undef GEN_PASS_CLASSES
std::unique_ptr< mlir::Pass > createMemberWriteValidatorPass()
void registerValidationPasses()
void registerMemberWriteValidatorPass()
void registerMemberWriteValidatorPassPass()