diff --git a/mie/include/mie/ir/op.h b/mie/include/mie/ir/op.h index 783b3f3..9241679 100644 --- a/mie/include/mie/ir/op.h +++ b/mie/include/mie/ir/op.h @@ -72,4 +72,6 @@ MIE_API void mie_op_destroy(struct mie_op *op); MIE_API void mie_op_init(struct mie_op *op); MIE_API void mie_op_cleanup(struct mie_op *op); +MIE_API const struct mie_type *mie_op_arg_get_type(const struct mie_op_arg *arg); + #endif diff --git a/mie/ir/op-arg.c b/mie/ir/op-arg.c new file mode 100644 index 0000000..d67cd8d --- /dev/null +++ b/mie/ir/op-arg.c @@ -0,0 +1,10 @@ +#include + +const struct mie_type *mie_op_arg_get_type(const struct mie_op_arg *arg) +{ + if (arg->arg_flags & MIE_OP_F_ARG_RESOLVED) { + return arg->arg_value->reg_type; + } + + return arg->arg_unresolved.reg_type; +}