authorgravatar for koachan@protonmail.comKoakuma <koachan@protonmail.com> 2023-01-04 10:58:40+07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-04-28 16:46:03-07:00
logcc2a5185d631b8b33eb5d466cc52ceb092435fd4
tree817dedf45e7004d10bdc0d8e1acc19122e26d619
parent1794a45572a30a493a5c10fcdc45ba0fa3ac4218

stage2: sparc64: Implement airStructFieldPtr


1 files changed, 8 insertions(+), 1 deletions(-)

src/arch/sparc64/CodeGen.zig+8-1
......@@ -595,7 +595,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
595595 .ret_load => try self.airRetLoad(inst),
596596 .store => try self.airStore(inst, false),
597597 .store_safe => try self.airStore(inst, true),
598 .struct_field_ptr=> @panic("TODO try self.airStructFieldPtr(inst)"),
598 .struct_field_ptr=> try self.airStructFieldPtr(inst),
599599 .struct_field_val=> try self.airStructFieldVal(inst),
600600 .array_to_slice => try self.airArrayToSlice(inst),
601601 .int_to_float => try self.airIntToFloat(inst),
......@@ -2425,6 +2425,13 @@ fn airStore(self: *Self, inst: Air.Inst.Index, safety: bool) !void {
24252425 return self.finishAir(inst, .dead, .{ bin_op.lhs, bin_op.rhs, .none });
24262426}
24272427
2428fn airStructFieldPtr(self: *Self, inst: Air.Inst.Index) !void {
2429 const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;
2430 const extra = self.air.extraData(Air.StructField, ty_pl.payload).data;
2431 const result = try self.structFieldPtr(inst, extra.struct_operand, extra.field_index);
2432 return self.finishAir(inst, result, .{ extra.struct_operand, .none, .none });
2433}
2434
24282435fn airStructFieldPtrIndex(self: *Self, inst: Air.Inst.Index, index: u8) !void {
24292436 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
24302437 const result = try self.structFieldPtr(inst, ty_op.operand, index);