From dbbaf84db126bc9b72c50987aa724b923f6f52f3 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Thu, 8 Jan 2026 23:08:12 +0900 Subject: feat: evaluate arguments in reverse order --- src/codegen.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/codegen.c') diff --git a/src/codegen.c b/src/codegen.c index 4e93e89..97a9209 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -395,11 +395,12 @@ static void codegen_func_call(CodeGen* g, AstNode* ast) { } AstNode* args = ast->node_args; - for (int i = 0; i < args->node_len; ++i) { - AstNode* arg = args->node_items + i; + // Evaluate arguments in the reverse order (right to left). + for (int i = args->node_len - 1; i >= 0; --i) { + AstNode* arg = &args->node_items[i]; codegen_expr(g, arg, GenMode_rval); } - for (int i = args->node_len - 1; i >= 0; --i) { + for (int i = 0; i < args->node_len && i < 6; ++i) { fprintf(g->out, " pop %s\n", param_reg(i)); } -- cgit v1.2.3-70-g09d2