From 2ae1d330f9a65ef074b198866e5f1c9a5d652eef Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Thu, 5 May 2016 23:19:02 +0200 Subject: Optimise ztrunc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/ztrunc.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'src/ztrunc.c') diff --git a/src/ztrunc.c b/src/ztrunc.c index e1a330c..3dedaba 100644 --- a/src/ztrunc.c +++ b/src/ztrunc.c @@ -5,7 +5,6 @@ void ztrunc(z_t a, z_t b, size_t bits) { - zahl_char_t mask = 1; size_t chars; if (unlikely(zzero(b))) { @@ -14,20 +13,17 @@ ztrunc(z_t a, z_t b, size_t bits) } chars = CEILING_BITS_TO_CHARS(bits); - a->sign = b->sign; a->used = MIN(chars, b->used); if (unlikely(a->used < chars)) bits = 0; if (likely(a != b)) { + a->sign = b->sign; ENSURE_SIZE(a, a->used); zmemcpy(a->chars, b->chars, a->used); } bits = BITS_IN_LAST_CHAR(bits); - if (likely(bits)) { - mask <<= bits; - mask -= 1; - a->chars[a->used - 1] &= mask; - } + if (likely(bits)) + a->chars[a->used - 1] &= ((zahl_char_t)1 << bits) - 1; TRIM_AND_ZERO(a); } -- cgit v1.2.3-70-g09d2