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 {
21042104 // block results.
21052105 .mcv = MCValue{ .none = {} },
21062106 });
2107 const block_data = self.blocks.getPtr(inst).?;
2108 defer block_data.relocs.deinit(self.gpa);
2107 defer self.blocks.getPtr(inst).?.relocs.deinit(self.gpa);
21092108
21102109 const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;
21112110 const extra = self.air.extraData(Air.Block, ty_pl.payload);
21122111 const body = self.air.extra[extra.end..][0..extra.data.body_len];
21132112 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;
21182117 return self.finishAir(inst, result, .{ .none, .none, .none });
21192118}
21202119
src/arch/riscv64/CodeGen.zig+3-4
......@@ -1720,17 +1720,16 @@ fn airBlock(self: *Self, inst: Air.Inst.Index) !void {
17201720 // block results.
17211721 .mcv = MCValue{ .none = {} },
17221722 });
1723 const block_data = self.blocks.getPtr(inst).?;
1724 defer block_data.relocs.deinit(self.gpa);
1723 defer self.blocks.getPtr(inst).?.relocs.deinit(self.gpa);
17251724
17261725 const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;
17271726 const extra = self.air.extraData(Air.Block, ty_pl.payload);
17281727 const body = self.air.extra[extra.end..][0..extra.data.body_len];
17291728 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;
17341733 return self.finishAir(inst, result, .{ .none, .none, .none });
17351734}
17361735
src/arch/x86_64/CodeGen.zig+3-4
......@@ -2853,17 +2853,16 @@ fn airBlock(self: *Self, inst: Air.Inst.Index) !void {
28532853 // block results.
28542854 .mcv = MCValue{ .none = {} },
28552855 });
2856 const block_data = self.blocks.getPtr(inst).?;
2857 defer block_data.relocs.deinit(self.gpa);
2856 defer self.blocks.getPtr(inst).?.relocs.deinit(self.gpa);
28582857
28592858 const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;
28602859 const extra = self.air.extraData(Air.Block, ty_pl.payload);
28612860 const body = self.air.extra[extra.end..][0..extra.data.body_len];
28622861 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;
28672866 return self.finishAir(inst, result, .{ .none, .none, .none });
28682867}
28692868