Commit 0d2f4d0654

joachimschmidt557 <joachim.schmidt557@outlook.com>
2022-01-15 21:37:26
stage2 ARM: implement load for stack_offset + stack_argument_offset
1 more behavior test passing
1 parent d48e424
Changed files (2)
src
arch
test
src/arch/arm/CodeGen.zig
@@ -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", .{});
-        },
     }
 }
 
test/behavior.zig
@@ -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");