diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | mpz/iset_ui.c | 17 |
2 files changed, 12 insertions, 7 deletions
@@ -3,6 +3,8 @@ * mpn/x86_64/gcd_1.asm: Reduce latency. * mpn/x86_64/mul_basecase.asm: Save one jump. + * mpz/iset_ui.c: Don't realloc. + 2012-03-20 Marco Bodrato <bodrato@mail.dm.unipi.it> * mp_clz_tab.c: Add __clz_tab[128]. diff --git a/mpz/iset_ui.c b/mpz/iset_ui.c index 815b7379d..7eed1c165 100644 --- a/mpz/iset_ui.c +++ b/mpz/iset_ui.c @@ -27,20 +27,23 @@ mpz_init_set_ui (mpz_ptr dest, unsigned long int val) { mp_size_t size; - ALLOC (dest) = 1; - PTR (dest) = (mp_ptr) (*__gmp_allocate_func) (BYTES_PER_MP_LIMB); - - PTR (dest)[0] = val & GMP_NUMB_MASK; - size = val != 0; - #if BITS_PER_ULONG > GMP_NUMB_BITS /* avoid warnings about shift amount */ if (val > GMP_NUMB_MAX) { - MPZ_REALLOC (dest, 2); + ALLOC (dest) = 2; + PTR (dest) = (mp_ptr) (*__gmp_allocate_func) (BYTES_PER_MP_LIMB*2); PTR (dest)[1] = val >> GMP_NUMB_BITS; size = 2; } + else #endif + { + ALLOC (dest) = 1; + PTR (dest) = (mp_ptr) (*__gmp_allocate_func) (BYTES_PER_MP_LIMB); + + size = val != 0; + } + PTR (dest)[0] = val & GMP_NUMB_MASK; SIZ (dest) = size; } |