commit 79d3780fbda475a50d6e0ca53d51c9e7c7690ab1 (tree)
parent 1af51a083383be5bbb3249c24e00326aff935122
Author: Mitchell Hashimoto <mitchell.hashimoto@gmail.com>
Date: Wed, 16 Mar 2022 21:22:02 -0700
stage2: bit_not on u0 is always 0
Diffstat:
2 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/src/value.zig b/src/value.zig
@@ -2977,6 +2977,11 @@ pub const Value = extern union {
const info = ty.intInfo(target);
+ if (info.bits == 0) {
+ assert(val.isZero()); // Sema should guarantee
+ return val;
+ }
+
// TODO is this a performance issue? maybe we should try the operation without
// resorting to BigInt first.
var val_space: Value.BigIntSpace = undefined;
diff --git a/test/behavior/math.zig b/test/behavior/math.zig
@@ -375,6 +375,9 @@ test "binary not" {
try expect(comptime x: {
break :x ~@as(u64, 2147483647) == 18446744071562067968;
});
+ try expect(comptime x: {
+ break :x ~@as(u0, 0) == 0;
+ });
try testBinaryNot(0b1010101010101010);
}