Commit 3c3a6c937b

Jacob Young <jacobly0@users.noreply.github.com>
2025-03-22 09:28:44
x86_64: fix rare miscomp that clobbers memory
1 parent 2361468
Changed files (1)
src
arch
src/arch/x86_64/CodeGen.zig
@@ -105447,10 +105447,19 @@ const Temp = struct {
             .dst_temps = .{ .{ .ref = .src0 }, .unused },
             .each = .{ .once = &.{} },
         }, .{
-            .required_features = .{ .fast_imm16, null, null, null },
             .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
             .patterns = &.{
                 .{ .src = .{ .mut_mem, .none, .none } },
+            },
+            .dst_temps = .{ .{ .ref = .src0 }, .unused },
+            .clobbers = .{ .eflags = true },
+            .each = .{ .once = &.{
+                .{ ._, ._, .@"and", .dst0w, .ua(.src0, .add_umax), ._, ._ },
+            } },
+        }, .{
+            .required_features = .{ .fast_imm16, null, null, null },
+            .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
+            .patterns = &.{
                 .{ .src = .{ .to_mut_gpr, .none, .none } },
             },
             .dst_temps = .{ .{ .ref = .src0 }, .unused },