aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2023-05-29 21:47:34 -0400
committerAndrew Kelley <andrew@ziglang.org>2023-06-10 20:47:57 -0700
commita803e9cf48e9566638e6ec1e23fe0b885e2651ee (patch)
tree931d88834f2a1292dffb4a44207b2295d626212b /src/Sema.zig
parent66ae42bb72a9ad4b1cd44b32fa5be322b07a5ffb (diff)
downloadzig-a803e9cf48e9566638e6ec1e23fe0b885e2651ee.tar.gz
zig-a803e9cf48e9566638e6ec1e23fe0b885e2651ee.zip
Sema: fix vector comparison and interning of -0
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 452efc8583..d25b022254 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -34538,10 +34538,13 @@ fn compareScalar(
rhs: Value,
ty: Type,
) CompileError!bool {
+ const mod = sema.mod;
+ const coerced_lhs = try mod.getCoerced(lhs, ty);
+ const coerced_rhs = try mod.getCoerced(rhs, ty);
switch (op) {
- .eq => return sema.valuesEqual(lhs, rhs, ty),
- .neq => return !(try sema.valuesEqual(lhs, rhs, ty)),
- else => return Value.compareHeteroAdvanced(lhs, op, rhs, sema.mod, sema),
+ .eq => return sema.valuesEqual(coerced_lhs, coerced_rhs, ty),
+ .neq => return !(try sema.valuesEqual(coerced_lhs, coerced_rhs, ty)),
+ else => return Value.compareHeteroAdvanced(coerced_lhs, op, coerced_rhs, mod, sema),
}
}