authorgravatar for joachim.schmidt557@outlook.comJoachim Schmidt <joachim.schmidt557@outlook.com> 2022-01-09 19:09:57+01:00
committergravatar for joachim.schmidt557@outlook.comJoachim Schmidt <joachim.schmidt557@outlook.com> 2022-01-09 19:09:57+01:00
logb5f03b3b7a33a1c63855a609ea2bb224f4a76065
treeeb7f1e0781b19b5671881912277681989a912aab
parenta1526f069a279f5527ff88492d51aae739aa6d93
signaturelock-open Commit is signed but in an unrecognized format.

stage2 codegen: fix airBlock bug in 3 backends


3 files changed, 9 insertions(+), 12 deletions(-)

src/arch/aarch64/CodeGen.zig+3-4
...@@ -2104,17 +2104,16 @@ fn airBlock(self: *Self, inst: Air.Inst.Index) !void {...@@ -2104,17 +2104,16 @@ fn airBlock(self: *Self, inst: Air.Inst.Index) !void {
2104 // block results.2104 // block results.
2105 .mcv = MCValue{ .none = {} },2105 .mcv = MCValue{ .none = {} },
2106 });2106 });
2107 const block_data = self.blocks.getPtr(inst).?;2107 defer self.blocks.getPtr(inst).?.relocs.deinit(self.gpa);
2108 defer block_data.relocs.deinit(self.gpa);
21092108
2110 const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;2109 const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;
2111 const extra = self.air.extraData(Air.Block, ty_pl.payload);2110 const extra = self.air.extraData(Air.Block, ty_pl.payload);
2112 const body = self.air.extra[extra.end..][0..extra.data.body_len];2111 const body = self.air.extra[extra.end..][0..extra.data.body_len];
2113 try self.genBody(body);2112 try self.genBody(body);
21142113
2115 for (block_data.relocs.items) |reloc| try self.performReloc(reloc);2114 for (self.blocks.getPtr(inst).?.relocs.items) |reloc| try self.performReloc(reloc);
21162115
2117 const result = @bitCast(MCValue, block_data.mcv);2116 const result = self.blocks.getPtr(inst).?.mcv;
2118 return self.finishAir(inst, result, .{ .none, .none, .none });2117 return self.finishAir(inst, result, .{ .none, .none, .none });
2119}2118}
21202119
src/arch/riscv64/CodeGen.zig+3-4
...@@ -1720,17 +1720,16 @@ fn airBlock(self: *Self, inst: Air.Inst.Index) !void {...@@ -1720,17 +1720,16 @@ fn airBlock(self: *Self, inst: Air.Inst.Index) !void {
1720 // block results.1720 // block results.
1721 .mcv = MCValue{ .none = {} },1721 .mcv = MCValue{ .none = {} },
1722 });1722 });
1723 const block_data = self.blocks.getPtr(inst).?;1723 defer self.blocks.getPtr(inst).?.relocs.deinit(self.gpa);
1724 defer block_data.relocs.deinit(self.gpa);
17251724
1726 const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;1725 const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;
1727 const extra = self.air.extraData(Air.Block, ty_pl.payload);1726 const extra = self.air.extraData(Air.Block, ty_pl.payload);
1728 const body = self.air.extra[extra.end..][0..extra.data.body_len];1727 const body = self.air.extra[extra.end..][0..extra.data.body_len];
1729 try self.genBody(body);1728 try self.genBody(body);
17301729
1731 for (block_data.relocs.items) |reloc| try self.performReloc(reloc);1730 for (self.blocks.getPtr(inst).?.relocs.items) |reloc| try self.performReloc(reloc);
17321731
1733 const result = @bitCast(MCValue, block_data.mcv);1732 const result = self.blocks.getPtr(inst).?.mcv;
1734 return self.finishAir(inst, result, .{ .none, .none, .none });1733 return self.finishAir(inst, result, .{ .none, .none, .none });
1735}1734}
17361735
src/arch/x86_64/CodeGen.zig+3-4
...@@ -2853,17 +2853,16 @@ fn airBlock(self: *Self, inst: Air.Inst.Index) !void {...@@ -2853,17 +2853,16 @@ fn airBlock(self: *Self, inst: Air.Inst.Index) !void {
2853 // block results.2853 // block results.
2854 .mcv = MCValue{ .none = {} },2854 .mcv = MCValue{ .none = {} },
2855 });2855 });
2856 const block_data = self.blocks.getPtr(inst).?;2856 defer self.blocks.getPtr(inst).?.relocs.deinit(self.gpa);
2857 defer block_data.relocs.deinit(self.gpa);
28582857
2859 const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;2858 const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;
2860 const extra = self.air.extraData(Air.Block, ty_pl.payload);2859 const extra = self.air.extraData(Air.Block, ty_pl.payload);
2861 const body = self.air.extra[extra.end..][0..extra.data.body_len];2860 const body = self.air.extra[extra.end..][0..extra.data.body_len];
2862 try self.genBody(body);2861 try self.genBody(body);
28632862
2864 for (block_data.relocs.items) |reloc| try self.performReloc(reloc);2863 for (self.blocks.getPtr(inst).?.relocs.items) |reloc| try self.performReloc(reloc);
28652864
2866 const result = @bitCast(MCValue, block_data.mcv);2865 const result = self.blocks.getPtr(inst).?.mcv;
2867 return self.finishAir(inst, result, .{ .none, .none, .none });2866 return self.finishAir(inst, result, .{ .none, .none, .none });
2868}2867}
28692868