authorgravatar for joachim.schmidt557@outlook.comJoachim Schmidt <joachim.schmidt557@outlook.com> 2022-01-15 21:37:26+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-01-15 18:29:06-05:00
log0d2f4d0654af88d68fa17c813023e89c6a56c01d
tree3ed6b23a50db0406f1547f27315bfedff3da85c9
parentd48e4245b68bf25c7f41804a5012ac157a5ee546

stage2 ARM: implement load for stack_offset + stack_argument_offset

1 more behavior test passing

2 files changed, 6 insertions(+), 9 deletions(-)

src/arch/arm/CodeGen.zig+5-8
...@@ -1483,17 +1483,14 @@ fn load(self: *Self, dst_mcv: MCValue, ptr: MCValue, ptr_ty: Type) InnerError!vo...@@ -1483,17 +1483,14 @@ fn load(self: *Self, dst_mcv: MCValue, ptr: MCValue, ptr_ty: Type) InnerError!vo
1483 else => return self.fail("TODO load from register into {}", .{dst_mcv}),1483 else => return self.fail("TODO load from register into {}", .{dst_mcv}),
1484 }1484 }
1485 },1485 },
1486 .memory => |addr| {1486 .memory,
1487 .stack_offset,
1488 .stack_argument_offset,
1489 => {
1487 const reg = try self.register_manager.allocReg(null, &.{});1490 const reg = try self.register_manager.allocReg(null, &.{});
1488 try self.genSetReg(ptr_ty, reg, .{ .memory = addr });1491 try self.genSetReg(ptr_ty, reg, ptr);
1489 try self.load(dst_mcv, .{ .register = reg }, ptr_ty);1492 try self.load(dst_mcv, .{ .register = reg }, ptr_ty);
1490 },1493 },
1491 .stack_offset => {
1492 return self.fail("TODO implement loading from MCValue.stack_offset", .{});
1493 },
1494 .stack_argument_offset => {
1495 return self.fail("TODO implement loading from MCValue.stack_argument_offset", .{});
1496 },
1497 }1494 }
1498}1495}
14991496
test/behavior.zig+1-1
...@@ -18,6 +18,7 @@ test {...@@ -18,6 +18,7 @@ test {
18 if (builtin.zig_backend != .stage2_x86_64) {18 if (builtin.zig_backend != .stage2_x86_64) {
19 // Tests that pass for stage1, llvm backend, C backend, wasm backend, and arm backend.19 // Tests that pass for stage1, llvm backend, C backend, wasm backend, and arm backend.
20 _ = @import("behavior/bool.zig");20 _ = @import("behavior/bool.zig");
21 _ = @import("behavior/bugs/655.zig");
2122
22 if (builtin.zig_backend != .stage2_arm and builtin.zig_backend != .stage2_x86_64) {23 if (builtin.zig_backend != .stage2_arm and builtin.zig_backend != .stage2_x86_64) {
23 // Tests that pass for stage1, llvm backend, C backend, wasm backend.24 // Tests that pass for stage1, llvm backend, C backend, wasm backend.
...@@ -26,7 +27,6 @@ test {...@@ -26,7 +27,6 @@ test {
26 _ = @import("behavior/basic.zig");27 _ = @import("behavior/basic.zig");
27 _ = @import("behavior/bitcast.zig");28 _ = @import("behavior/bitcast.zig");
28 _ = @import("behavior/bugs/624.zig");29 _ = @import("behavior/bugs/624.zig");
29 _ = @import("behavior/bugs/655.zig");
30 _ = @import("behavior/bugs/704.zig");30 _ = @import("behavior/bugs/704.zig");
31 _ = @import("behavior/bugs/1486.zig");31 _ = @import("behavior/bugs/1486.zig");
32 _ = @import("behavior/bugs/2692.zig");32 _ = @import("behavior/bugs/2692.zig");