aboutsummaryrefslogtreecommitdiff
path: root/lib/std/math/big/int.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-02-11 23:45:40 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-02-11 23:45:40 -0700
commitb4e344bcf859f2df89637e0825a2e0e57d092ef6 (patch)
tree44465c5c3eadcfdc57f0a0a3eb5cffff9107bd7f /lib/std/math/big/int.zig
parent3d0f4b90305bc1815ccc86613cb3da715e9b62c0 (diff)
parentd3565ed6b48c9c66128f181e7b90b5348504cb3f (diff)
downloadzig-b4e344bcf859f2df89637e0825a2e0e57d092ef6.tar.gz
zig-b4e344bcf859f2df89637e0825a2e0e57d092ef6.zip
Merge remote-tracking branch 'origin/master' into ast-memory-layout
Conflicts: * lib/std/zig/ast.zig * lib/std/zig/parse.zig * lib/std/zig/parser_test.zig * lib/std/zig/render.zig * src/Module.zig * src/zir.zig I resolved some of the conflicts by reverting a small portion of @tadeokondrak's stage2 logic here regarding `callconv(.Inline)`. It will need to get reworked as part of this branch.
Diffstat (limited to 'lib/std/math/big/int.zig')
-rw-r--r--lib/std/math/big/int.zig8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/std/math/big/int.zig b/lib/std/math/big/int.zig
index 3cd72dd8e4..81982eac51 100644
--- a/lib/std/math/big/int.zig
+++ b/lib/std/math/big/int.zig
@@ -549,8 +549,8 @@ pub const Mutable = struct {
return;
}
- const r_len = llshr(r.limbs[0..], a.limbs[0..a.limbs.len], shift);
- r.len = a.limbs.len - (shift / limb_bits);
+ llshr(r.limbs[0..], a.limbs[0..a.limbs.len], shift);
+ r.normalize(a.limbs.len - (shift / limb_bits));
r.positive = a.positive;
}
@@ -1348,7 +1348,9 @@ pub const Const = struct {
/// Returns true if `a == 0`.
pub fn eqZero(a: Const) bool {
- return a.limbs.len == 1 and a.limbs[0] == 0;
+ var d: Limb = 0;
+ for (a.limbs) |limb| d |= limb;
+ return d == 0;
}
/// Returns true if `|a| == |b|`.