aboutsummaryrefslogtreecommitdiff
path: root/src/type.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/type.zig')
-rw-r--r--src/type.zig14
1 files changed, 4 insertions, 10 deletions
diff --git a/src/type.zig b/src/type.zig
index 6d27eeaadb..fdaa445041 100644
--- a/src/type.zig
+++ b/src/type.zig
@@ -3101,9 +3101,8 @@ pub const Type = extern union {
return Value.Tag.int_i64.create(arena, n);
}
- var res = try std.math.big.int.Managed.initSet(arena, 1);
- try res.shiftLeft(res, info.bits - 1);
- res.negate();
+ var res = try std.math.big.int.Managed.init(arena);
+ try res.setTwosCompIntLimit(.min, info.signedness, info.bits);
const res_const = res.toConst();
if (res_const.positive) {
@@ -3126,13 +3125,8 @@ pub const Type = extern union {
return Value.Tag.int_u64.create(arena, n);
}
- var res = try std.math.big.int.Managed.initSet(arena, 1);
- try res.shiftLeft(res, info.bits - @boolToInt(info.signedness == .signed));
- const one = std.math.big.int.Const{
- .limbs = &[_]std.math.big.Limb{1},
- .positive = true,
- };
- res.sub(res.toConst(), one) catch unreachable;
+ var res = try std.math.big.int.Managed.init(arena);
+ try res.setTwosCompIntLimit(.max, info.signedness, info.bits);
const res_const = res.toConst();
if (res_const.positive) {