From 2ddb065243d4c1e69db8d7bbebd7a2fb7b5dcfd0 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Fri, 18 Apr 2025 23:15:28 +0100 Subject: [PATCH] lang: codegen: disable CODEGEN_F_IGNORE_RESULT in expression generation this flag caused some issues where the result of a message would be ignored if it was the first operand in a larger expression. --- lang/codegen/expr.c | 8 +------- lang/codegen/msg.c | 4 ++++ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/lang/codegen/expr.c b/lang/codegen/expr.c index ecf840e..d950577 100644 --- a/lang/codegen/expr.c +++ b/lang/codegen/expr.c @@ -139,13 +139,7 @@ static struct code_generator_result gen_msg( debug_printf("codegen: got msg\n"); struct expr_codegen_state *expr = (struct expr_codegen_state *)state; - int flags = 0; - if (b_queue_empty(&expr->s_item_queue) - && (expr->s_flags & CODEGEN_F_IGNORE_RESULT)) { - flags |= CODEGEN_F_IGNORE_RESULT; - } - - codegen_push_generator(gen, CODE_GENERATOR_MSG, flags, NULL); + codegen_push_generator(gen, CODE_GENERATOR_MSG, 0, NULL); return CODEGEN_RESULT_OK(CODEGEN_R_REPEAT_NODE); } diff --git a/lang/codegen/msg.c b/lang/codegen/msg.c index 6dcc953..0a88694 100644 --- a/lang/codegen/msg.c +++ b/lang/codegen/msg.c @@ -149,6 +149,7 @@ static enum ivy_status state_fini( struct mie_type *ret_type = NULL; const char *value_name = NULL; +#if 0 if (msg->s_flags & CODEGEN_F_IGNORE_RESULT) { ret_type = mie_ctx_get_type(gen->c_ctx, MIE_TYPE_VOID); flags = MIE_BUILDER_IGNORE_RESULT; @@ -156,6 +157,9 @@ static enum ivy_status state_fini( ret_type = mie_ctx_get_type(gen->c_ctx, MIE_TYPE_ID); value_name = "msgtmp"; } +#endif + ret_type = mie_ctx_get_type(gen->c_ctx, MIE_TYPE_ID); + value_name = "msgtmp"; struct mie_value *msg_send = mie_builder_msg( gen->c_builder, ret_type, msg->s_recipient, sel_value,