authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-03-13 20:25:13-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-03-15 00:01:44-04:00
log5ab426a3020614dcc8640a4019c8d93c6c917ea0
treedfc57bb2bbe4f14256cf3a7e760cc6ffe7347931
parent9a4e9215fcd91cc75e569195834ba1428a736fa0

x86_64: fix store of undefined


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

src/arch/x86_64/CodeGen.zig+7-1
...@@ -2861,7 +2861,13 @@ fn store(self: *Self, ptr: MCValue, value: MCValue, ptr_ty: Type, value_ty: Type...@@ -2861,7 +2861,13 @@ fn store(self: *Self, ptr: MCValue, value: MCValue, ptr_ty: Type, value_ty: Type
2861 .unreach => unreachable,2861 .unreach => unreachable,
2862 .eflags => unreachable,2862 .eflags => unreachable,
2863 .undef => {2863 .undef => {
2864 try self.genSetReg(value_ty, reg, value);2864 switch (abi_size) {
2865 1 => try self.store(ptr, .{ .immediate = 0xaa }, ptr_ty, value_ty),
2866 2 => try self.store(ptr, .{ .immediate = 0xaaaa }, ptr_ty, value_ty),
2867 4 => try self.store(ptr, .{ .immediate = 0xaaaaaaaa }, ptr_ty, value_ty),
2868 8 => try self.store(ptr, .{ .immediate = 0xaaaaaaaaaaaaaaaa }, ptr_ty, value_ty),
2869 else => try self.genInlineMemset(ptr, .{ .immediate = 0xaa }, .{ .immediate = abi_size }, .{}),
2870 }
2865 },2871 },
2866 .immediate => |imm| {2872 .immediate => |imm| {
2867 switch (abi_size) {2873 switch (abi_size) {