diff --git a/mie/include/mie/ir/op.h b/mie/include/mie/ir/op.h index c9b63f0..acc7dd1 100644 --- a/mie/include/mie/ir/op.h +++ b/mie/include/mie/ir/op.h @@ -55,6 +55,7 @@ struct mie_op { const struct mie_dialect *op_dialect; const struct mie_op_definition *op_info; + struct mie_block *op_container; struct mie_file_span op_name_span; /* only valid if the F_RESOLVED flag is NOT set */ char *op_name; diff --git a/mie/ir/block.c b/mie/ir/block.c index 2802665..9416da4 100644 --- a/mie/ir/block.c +++ b/mie/ir/block.c @@ -4,7 +4,15 @@ struct mie_op *mie_block_add_op(struct mie_block *block) { - return mie_vector_emplace_back(block->b_ops, NULL); + struct mie_op *op = mie_vector_emplace_back(block->b_ops, NULL); + if (!op) { + return NULL; + } + + mie_op_init(op); + op->op_container = block; + + return op; } struct mie_register *mie_block_add_param(struct mie_block *block)