From 00ba3a3d87425fbe40a40da7a9ac5895b3d133e0 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sun, 25 Jan 2026 15:02:48 +0000 Subject: [PATCH] mie: print: implement exception-printing of resolved, but null, op args this is to make it easier to spot mistakes made when modifying IR. --- mie/print/block.c | 2 ++ mie/print/op.c | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/mie/print/block.c b/mie/print/block.c index 152ded9..779453c 100644 --- a/mie/print/block.c +++ b/mie/print/block.c @@ -60,6 +60,8 @@ static void print_block_header( if (block->b_name.n_str) { b_stream_write_string(printer->p_stream, block->b_name.n_str, NULL); + } else { + b_stream_write_string(printer->p_stream, "", NULL); } print_block_header_params(printer, block); diff --git a/mie/print/op.c b/mie/print/op.c index 1162590..4beb9eb 100644 --- a/mie/print/op.c +++ b/mie/print/op.c @@ -13,9 +13,15 @@ void mie_printer_print_op_arg( const struct mie_type *arg_type = NULL; if (MIE_TEST_FLAGS(arg->arg_flags, MIE_OP_F_ARG_RESOLVED)) { - arg_flags = arg->arg_value.u_reg->reg_flags; - arg_name = arg->arg_value.u_reg->reg_name.n_str; - arg_type = arg->arg_value.u_reg->reg_type; + if (!arg->arg_value.u_reg) { + arg_flags = 0; + arg_name = ""; + arg_type = NULL; + } else { + arg_flags = arg->arg_value.u_reg->reg_flags; + arg_name = arg->arg_value.u_reg->reg_name.n_str; + arg_type = arg->arg_value.u_reg->reg_type; + } } else { arg_flags = arg->arg_unresolved.reg_flags; arg_name = arg->arg_unresolved.reg_name; @@ -30,7 +36,7 @@ void mie_printer_print_op_arg( b_stream_write_string(printer->p_stream, arg_name, NULL); - if (!include_type) { + if (!include_type || !arg_type) { return; }