mirror of
https://github.com/ziglang/zig.git
synced 2025-12-26 08:03:08 +00:00
Return Value.zero when the result of shr requires zero bits
This commit is contained in:
parent
c08b190c69
commit
a68e6cd3d7
@ -2635,9 +2635,17 @@ pub const Value = extern union {
|
||||
var lhs_space: Value.BigIntSpace = undefined;
|
||||
const lhs_bigint = lhs.toBigInt(&lhs_space);
|
||||
const shift = @intCast(usize, rhs.toUnsignedInt());
|
||||
|
||||
const result_limbs = lhs_bigint.limbs.len -| (shift / (@sizeOf(std.math.big.Limb) * 8));
|
||||
if (result_limbs == 0) {
|
||||
// The shift is enough to remove all the bits from the number, which means the
|
||||
// result is zero.
|
||||
return Value.zero;
|
||||
}
|
||||
|
||||
const limbs = try allocator.alloc(
|
||||
std.math.big.Limb,
|
||||
lhs_bigint.limbs.len - (shift / (@sizeOf(std.math.big.Limb) * 8)),
|
||||
result_limbs,
|
||||
);
|
||||
var result_bigint = BigIntMutable{
|
||||
.limbs = limbs,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user