diff --git a/src/arch/arm/CodeGen.zig b/src/arch/arm/CodeGen.zig index bb436dd7c2..66c5a7a429 100644 --- a/src/arch/arm/CodeGen.zig +++ b/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", .{}); - }, } } diff --git a/test/behavior.zig b/test/behavior.zig index e51a8b063c..9fc2af30dc 100644 --- a/test/behavior.zig +++ b/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");