diff options
| author | Carson Fleming <cflems@cflems.net> | 2026-03-27 11:38:06 -1000 |
|---|---|---|
| committer | Carson Fleming <cflems@cflems.net> | 2026-03-27 11:38:06 -1000 |
| commit | 617732aac7394fb335baf957dc8cebac1fea756d (patch) | |
| tree | f358927f20a91c779988c1c56112b950712c6a1e | |
| parent | 414a608c36b2d8f208ad0223219736d7582948ae (diff) | |
| download | ccc-617732aac7394fb335baf957dc8cebac1fea756d.tar.gz | |
todo: make weird.c work
| -rw-r--r-- | codegen.c | 9 |
1 files changed, 4 insertions, 5 deletions
@@ -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; } |
