From 617732aac7394fb335baf957dc8cebac1fea756d Mon Sep 17 00:00:00 2001 From: Carson Fleming Date: Fri, 27 Mar 2026 11:38:06 -1000 Subject: todo: make weird.c work --- codegen.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'codegen.c') diff --git a/codegen.c b/codegen.c index d0905e2..9d7f183 100644 --- a/codegen.c +++ b/codegen.c @@ -61,9 +61,9 @@ static void emit_var_ref( CGEN_PANIC("reference to undefined variable %s", node->ident); fprintf(outfile, "\tmov "); - emit_storage_loc(outfile, &var_def.loc); - fprintf(outfile, ", "); emit_storage_loc(outfile, storage); + fprintf(outfile, ", "); + emit_storage_loc(outfile, &var_def.loc); fprintf(outfile, "\n"); } } @@ -171,19 +171,18 @@ static void emit_fn_decl(FILE* outfile, const struct fn_decl_node* node) { scope->bp_offset = 0; struct var_decl_node* args_node = node->args_head; - long long arg_bp_offset = -8; while (args_node != NULL) { unsigned long long type_sz = get_type_size(&args_node->type); + scope->bp_offset += type_sz; scope_define_var(scope, (struct var_def) { .name = args_node->ident, .loc = { .type = BP_OFFSET, - .offset = arg_bp_offset, + .offset = scope->bp_offset, }, }); - arg_bp_offset -= type_sz; args_node = args_node->next; } -- cgit v1.2.3