diff options
author | Mathias Magnusson <mathias@magnusson.space> | 2025-07-30 14:04:03 +0200 |
---|---|---|
committer | Mathias Magnusson <mathias@magnusson.space> | 2025-07-30 14:04:03 +0200 |
commit | 580405d656bc896f1e086b72f734a1e61d7c8f50 (patch) | |
tree | db6db88759e5e1dd151b43eace98b0ac8c2a7546 /src/codegen.zig | |
parent | b368fe65bb45dc4414c9cc2dabc7d84fa7690c36 (diff) | |
download | huginn-580405d656bc896f1e086b72f734a1e61d7c8f50.tar.gz |
store parameter on the stack
Diffstat (limited to 'src/codegen.zig')
-rw-r--r-- | src/codegen.zig | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index 3fed244..0dbf35e 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -709,7 +709,6 @@ const ProcedureContext = struct { fn genAssignLocal(self: *Self, assign_local: compile.Instr.AssignLocal) !void { const src = self.register_allocator.get(assign_local.val); try self.freeUnusedVRegs(); - std.log.debug("{}", .{self.locals.get(assign_local.local).?.stack_offset}); try self.emit(.sd(.sp, self.locals.get(assign_local.local).?.stack_offset, src)); } @@ -755,16 +754,12 @@ const ProcedureContext = struct { try self.emit(.addi(.sp, .sp, -self.stack_size)); try self.emit(.sd(.sp, 0, .ra)); - if (self.proc.param_reg) |reg| { - const param = try self.register_allocator.allocate(reg); - try self.emit(.addi(param, .a0, 0)); + if (self.proc.param_lvar) |lvar| { + try self.emit(.sd(.sp, self.locals.get(lvar).?.stack_offset, .a0)); } } fn epilogue(self: *Self) !void { - if (self.proc.param_reg) |reg| { - self.register_allocator.free(reg); - } try self.emit(.ld(.ra, .sp, 0)); try self.emit(.addi(.sp, .sp, self.stack_size)); try self.emit(.jalr(.zero, .ra, 0)); |