commit 6ec275ebd8fce2e816f3f66e0fec5e53669b96c1 (tree)
parent 135a34c9631254d43b37be6c7b41d56669960669
Author: Justus Klausecker <justus@klausecker.de>
Date: Fri, 11 Jul 2025 03:40:30 +0200
Sema: remove incorrect safety check for saturating left shift
Diffstat:
3 files changed, 1 insertion(+), 5 deletions(-)
diff --git a/src/Sema.zig b/src/Sema.zig
@@ -13677,7 +13677,7 @@ fn zirShl(
try sema.requireRuntimeBlock(block, src, runtime_src);
if (block.wantSafety()) {
const bit_count = scalar_ty.intInfo(zcu).bits;
- if (!std.math.isPowerOfTwo(bit_count)) {
+ if (air_tag != .shl_sat and !std.math.isPowerOfTwo(bit_count)) {
const bit_count_val = try pt.intValue(scalar_rhs_ty, bit_count);
const ok = if (rhs_ty.zigTypeTag(zcu) == .vector) ok: {
const bit_count_inst = Air.internedToRef((try sema.splat(rhs_ty, bit_count_val)).toIntern());
diff --git a/test/behavior/bit_shifting.zig b/test/behavior/bit_shifting.zig
@@ -170,8 +170,6 @@ test "Saturating Shift Left" {
const S = struct {
fn shlSat(x: anytype, y: std.math.Log2Int(@TypeOf(x))) @TypeOf(x) {
- // workaround https://github.com/ziglang/zig/issues/23033
- @setRuntimeSafety(false);
return x <<| y;
}
diff --git a/test/behavior/x86_64/binary.zig b/test/behavior/x86_64/binary.zig
@@ -5473,8 +5473,6 @@ inline fn shlSaturate(comptime Type: type, lhs: Type, rhs: Type) Type {
// workaround https://github.com/ziglang/zig/issues/23139
return lhs <<| @min(@abs(rhs), splat(ChangeScalar(Type, u64), imax(u64)));
}
- // workaround https://github.com/ziglang/zig/issues/23033
- @setRuntimeSafety(false);
return lhs <<| @abs(rhs);
}
test shlSaturate {