diff --git a/mie/include/mie/ir/builder.h b/mie/include/mie/ir/builder.h index a7df61c..5ff888a 100644 --- a/mie/include/mie/ir/builder.h +++ b/mie/include/mie/ir/builder.h @@ -1,6 +1,7 @@ #ifndef MIE_IR_BUILDER_H_ #define MIE_IR_BUILDER_H_ +#include #include #include @@ -30,9 +31,9 @@ MIE_API void mie_builder_step_into_block( MIE_API void mie_builder_step_out(struct mie_builder *builder); MIE_API struct mie_op *mie_builder_put_op( - struct mie_builder *, const char *dialect, const char *op, + struct mie_builder *builder, const char *dialect, const char *op, struct mie_register **args, size_t nr_args); MIE_API enum mie_status mie_builder_put_name( - struct mie_builder *, struct mie_name *name, const char *hint); + struct mie_builder *builder, struct mie_name *name, const char *hint); #endif diff --git a/mie/ir/builder.c b/mie/ir/builder.c index 42ed8c1..84183d4 100644 --- a/mie/ir/builder.c +++ b/mie/ir/builder.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -13,6 +14,7 @@ struct builder_scope { }; struct mie_builder { + struct mie_emitter b_base; struct mie_ctx *b_ctx; b_queue b_scope_stack; struct mie_op *b_root; @@ -28,6 +30,11 @@ struct mie_builder *mie_builder_create(struct mie_ctx *ctx, struct mie_op *root) memset(out, 0x0, sizeof *out); + out->b_base.e_get_ctx = (mie_emit_get_ctx)mie_builder_get_ctx; + out->b_base.e_put_op = (mie_emit_put_op)mie_builder_put_op; + out->b_base.e_put_name = (mie_emit_put_name)mie_builder_put_name; + out->b_base.e_put_block = NULL; + out->b_ctx = ctx; out->b_root = root;