stage2 ARM: implement load for stack_offset + stack_argument_offset

1 more behavior test passing
This commit is contained in:
joachimschmidt557 2022-01-15 21:37:26 +01:00 committed by Andrew Kelley
parent d48e4245b6
commit 0d2f4d0654
2 changed files with 6 additions and 9 deletions

View file

@ -1483,17 +1483,14 @@ fn load(self: *Self, dst_mcv: MCValue, ptr: MCValue, ptr_ty: Type) InnerError!vo
else => return self.fail("TODO load from register into {}", .{dst_mcv}),
}
},
.memory => |addr| {
.memory,
.stack_offset,
.stack_argument_offset,
=> {
const reg = try self.register_manager.allocReg(null, &.{});
try self.genSetReg(ptr_ty, reg, .{ .memory = addr });
try self.genSetReg(ptr_ty, reg, ptr);
try self.load(dst_mcv, .{ .register = reg }, ptr_ty);
},
.stack_offset => {
return self.fail("TODO implement loading from MCValue.stack_offset", .{});
},
.stack_argument_offset => {
return self.fail("TODO implement loading from MCValue.stack_argument_offset", .{});
},
}
}

View file

@ -18,6 +18,7 @@ test {
if (builtin.zig_backend != .stage2_x86_64) {
// Tests that pass for stage1, llvm backend, C backend, wasm backend, and arm backend.
_ = @import("behavior/bool.zig");
_ = @import("behavior/bugs/655.zig");
if (builtin.zig_backend != .stage2_arm and builtin.zig_backend != .stage2_x86_64) {
// Tests that pass for stage1, llvm backend, C backend, wasm backend.
@ -26,7 +27,6 @@ test {
_ = @import("behavior/basic.zig");
_ = @import("behavior/bitcast.zig");
_ = @import("behavior/bugs/624.zig");
_ = @import("behavior/bugs/655.zig");
_ = @import("behavior/bugs/704.zig");
_ = @import("behavior/bugs/1486.zig");
_ = @import("behavior/bugs/2692.zig");