diff --git a/mie/dialect/cf/op/br-cond.c b/mie/dialect/cf/op/br-cond.c index 5188ca2..aa73417 100644 --- a/mie/dialect/cf/op/br-cond.c +++ b/mie/dialect/cf/op/br-cond.c @@ -1,9 +1,30 @@ #include #include +#include #include +#include static enum mie_status print(struct mie_printer *printer, const struct mie_op *op) { + if (MIE_VECTOR_COUNT(op->op_args) != 1) { + return MIE_SUCCESS; + } + + if (MIE_VECTOR_COUNT(op->op_successors) != 2) { + return MIE_SUCCESS; + } + + const struct mie_op_arg *cond = &op->op_args.items[0]; + const struct mie_op_successor *if_true = &op->op_successors.items[0]; + const struct mie_op_successor *if_false = &op->op_successors.items[1]; + + b_stream_write_char(printer->p_stream, ' '); + mie_printer_print_op_arg(printer, cond, false); + b_stream_write_string(printer->p_stream, ", ", NULL); + mie_printer_print_op_successor(printer, if_true, true); + b_stream_write_string(printer->p_stream, ", ", NULL); + mie_printer_print_op_successor(printer, if_false, true); + return MIE_SUCCESS; } diff --git a/mie/dialect/cf/op/br.c b/mie/dialect/cf/op/br.c index 4478be7..4912d22 100644 --- a/mie/dialect/cf/op/br.c +++ b/mie/dialect/cf/op/br.c @@ -1,9 +1,17 @@ #include +#include #include +#include #include +#include static enum mie_status print(struct mie_printer *printer, const struct mie_op *op) { + b_stream_write_char(printer->p_stream, ' '); + const struct mie_op_successor *successor = &op->op_successors.items[0]; + + mie_printer_print_op_successor(printer, successor, true); + return MIE_SUCCESS; }