| ... | @@ -1762,8 +1762,19 @@ fn store(self: *Self, ptr: MCValue, value: MCValue, ptr_ty: Type, value_ty: Type | ... | @@ -1762,8 +1762,19 @@ fn store(self: *Self, ptr: MCValue, value: MCValue, ptr_ty: Type, value_ty: Type |
| 1762 | }, | 1762 | }, |
| 1763 | } | 1763 | } |
| 1764 | }, | 1764 | }, |
| 1765 | .memory => { | 1765 | .memory => |addr| { |
| 1766 | return self.fail("TODO implement storing to MCValue.memory", .{}); | 1766 | const reg = try self.copyToTmpRegister(ptr_ty, .{ .memory = addr }); |
| | 1767 | // mov reg, [reg] |
| | 1768 | _ = try self.addInst(.{ |
| | 1769 | .tag = .mov, |
| | 1770 | .ops = (Mir.Ops{ |
| | 1771 | .reg1 = reg.to64(), |
| | 1772 | .reg2 = reg.to64(), |
| | 1773 | .flags = 0b10, |
| | 1774 | }).encode(), |
| | 1775 | .data = .{ .imm = 0 }, |
| | 1776 | }); |
| | 1777 | return self.store(.{ .register = reg }, value, ptr_ty, value_ty); |
| 1767 | }, | 1778 | }, |
| 1768 | .stack_offset => { | 1779 | .stack_offset => { |
| 1769 | return self.fail("TODO implement storing to MCValue.stack_offset", .{}); | 1780 | return self.fail("TODO implement storing to MCValue.stack_offset", .{}); |