| ... | @@ -1208,14 +1208,16 @@ fn load(self: *Self, dst_mcv: MCValue, ptr: MCValue, ptr_ty: Type) InnerError!vo | ... | @@ -1208,14 +1208,16 @@ fn load(self: *Self, dst_mcv: MCValue, ptr: MCValue, ptr_ty: Type) InnerError!vo |
| 1208 | .register => { | 1208 | .register => { |
| 1209 | return self.fail("TODO implement loading from MCValue.register", .{}); | 1209 | return self.fail("TODO implement loading from MCValue.register", .{}); |
| 1210 | }, | 1210 | }, |
| 1211 | .memory => |addr| { | 1211 | .memory, |
| | 1212 | .stack_offset, |
| | 1213 | => { |
| 1212 | const reg = try self.register_manager.allocReg(null, &.{}); | 1214 | const reg = try self.register_manager.allocReg(null, &.{}); |
| 1213 | try self.genSetReg(ptr_ty, reg, .{ .memory = addr }); | 1215 | self.register_manager.freezeRegs(&.{reg}); |
| | 1216 | defer self.register_manager.unfreezeRegs(&.{reg}); |
| | 1217 | |
| | 1218 | try self.genSetReg(ptr_ty, reg, ptr); |
| 1214 | try self.load(dst_mcv, .{ .register = reg }, ptr_ty); | 1219 | try self.load(dst_mcv, .{ .register = reg }, ptr_ty); |
| 1215 | }, | 1220 | }, |
| 1216 | .stack_offset => { | | |
| 1217 | return self.fail("TODO implement loading from MCValue.stack_offset", .{}); | | |
| 1218 | }, | | |
| 1219 | } | 1221 | } |
| 1220 | } | 1222 | } |
| 1221 | | 1223 | |