diff options
| author | David Rubin <david@vortan.dev> | 2025-11-06 20:27:38 -0800 |
|---|---|---|
| committer | David Rubin <david@vortan.dev> | 2025-11-06 20:27:38 -0800 |
| commit | 483f9bd3670a52242d799dd4eee4273bdc714e8a (patch) | |
| tree | 0c2dcdc6b5b14aa1e9706b4e2a0c9be0cb9130c2 /src/codegen | |
| parent | 09e4035e79caea3174bb3f60ba005fe5838d82e5 (diff) | |
| download | zig-483f9bd3670a52242d799dd4eee4273bdc714e8a.tar.gz zig-483f9bd3670a52242d799dd4eee4273bdc714e8a.zip | |
llvm: add extra clobbers to valgrind requests
This seems to work around a very puzzling miscompilation first
present in LLVM 21.x. We already unconditionally add these
clobbers to inline assembly that came from the source, the
valgrind requests should also contain them.
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/llvm.zig | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 2711deba5c..a56311b325 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -11672,7 +11672,7 @@ pub const FuncGen = struct { \\ srl $$0, $$0, 19 \\ or $$13, $$13, $$13 , - .constraints = "={$11},{$12},{$11},~{memory}", + .constraints = "={$11},{$12},{$11},~{memory},~{$1}", }, .mips64, .mips64el => .{ .template = @@ -11680,7 +11680,7 @@ pub const FuncGen = struct { \\ dsll $$0, $$0, 29 ; dsll $$0, $$0, 19 \\ or $$13, $$13, $$13 , - .constraints = "={$11},{$12},{$11},~{memory}", + .constraints = "={$11},{$12},{$11},~{memory},~{$1}", }, .powerpc, .powerpcle => .{ .template = @@ -11727,7 +11727,7 @@ pub const FuncGen = struct { \\ roll $$61, %edi ; roll $$51, %edi \\ xchgl %ebx, %ebx , - .constraints = "={edx},{eax},{edx},~{cc},~{memory}", + .constraints = "={edx},{eax},{edx},~{cc},~{memory},~{dirflag},~{fpsr},~{flags}", }, .x86_64 => .{ .template = @@ -11735,7 +11735,7 @@ pub const FuncGen = struct { \\ rolq $$61, %rdi ; rolq $$51, %rdi \\ xchgq %rbx, %rbx , - .constraints = "={rdx},{rax},{rdx},~{cc},~{memory}", + .constraints = "={rdx},{rax},{rdx},~{cc},~{memory},~{dirflag},~{fpsr},~{flags}", }, else => unreachable, }; |
