commit b5f03b3b7a33a1c63855a609ea2bb224f4a76065 (tree)
parent a1526f069a279f5527ff88492d51aae739aa6d93
Author: joachimschmidt557 <joachim.schmidt557@outlook.com>
Date: Sun, 9 Jan 2022 19:09:57 +0100
stage2 codegen: fix airBlock bug in 3 backends
Diffstat:
3 files changed, 9 insertions(+), 12 deletions(-)
diff --git a/src/arch/aarch64/CodeGen.zig b/src/arch/aarch64/CodeGen.zig
@@ -2104,17 +2104,16 @@ fn airBlock(self: *Self, inst: Air.Inst.Index) !void {
// block results.
.mcv = MCValue{ .none = {} },
});
- const block_data = self.blocks.getPtr(inst).?;
- defer block_data.relocs.deinit(self.gpa);
+ defer self.blocks.getPtr(inst).?.relocs.deinit(self.gpa);
const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;
const extra = self.air.extraData(Air.Block, ty_pl.payload);
const body = self.air.extra[extra.end..][0..extra.data.body_len];
try self.genBody(body);
- for (block_data.relocs.items) |reloc| try self.performReloc(reloc);
+ for (self.blocks.getPtr(inst).?.relocs.items) |reloc| try self.performReloc(reloc);
- const result = @bitCast(MCValue, block_data.mcv);
+ const result = self.blocks.getPtr(inst).?.mcv;
return self.finishAir(inst, result, .{ .none, .none, .none });
}
diff --git a/src/arch/riscv64/CodeGen.zig b/src/arch/riscv64/CodeGen.zig
@@ -1720,17 +1720,16 @@ fn airBlock(self: *Self, inst: Air.Inst.Index) !void {
// block results.
.mcv = MCValue{ .none = {} },
});
- const block_data = self.blocks.getPtr(inst).?;
- defer block_data.relocs.deinit(self.gpa);
+ defer self.blocks.getPtr(inst).?.relocs.deinit(self.gpa);
const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;
const extra = self.air.extraData(Air.Block, ty_pl.payload);
const body = self.air.extra[extra.end..][0..extra.data.body_len];
try self.genBody(body);
- for (block_data.relocs.items) |reloc| try self.performReloc(reloc);
+ for (self.blocks.getPtr(inst).?.relocs.items) |reloc| try self.performReloc(reloc);
- const result = @bitCast(MCValue, block_data.mcv);
+ const result = self.blocks.getPtr(inst).?.mcv;
return self.finishAir(inst, result, .{ .none, .none, .none });
}
diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig
@@ -2853,17 +2853,16 @@ fn airBlock(self: *Self, inst: Air.Inst.Index) !void {
// block results.
.mcv = MCValue{ .none = {} },
});
- const block_data = self.blocks.getPtr(inst).?;
- defer block_data.relocs.deinit(self.gpa);
+ defer self.blocks.getPtr(inst).?.relocs.deinit(self.gpa);
const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;
const extra = self.air.extraData(Air.Block, ty_pl.payload);
const body = self.air.extra[extra.end..][0..extra.data.body_len];
try self.genBody(body);
- for (block_data.relocs.items) |reloc| try self.performReloc(reloc);
+ for (self.blocks.getPtr(inst).?.relocs.items) |reloc| try self.performReloc(reloc);
- const result = @bitCast(MCValue, block_data.mcv);
+ const result = self.blocks.getPtr(inst).?.mcv;
return self.finishAir(inst, result, .{ .none, .none, .none });
}