[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] feature/bignum d3549c1 2/4: Use mpz_import in mpz_set_uint
From: |
Tom Tromey |
Subject: |
[Emacs-diffs] feature/bignum d3549c1 2/4: Use mpz_import in mpz_set_uintmax_slow |
Date: |
Wed, 8 Aug 2018 19:34:57 -0400 (EDT) |
branch: feature/bignum
commit d3549c190152921dd05e694d41e02a002789d191
Author: Tom Tromey <address@hidden>
Commit: Tom Tromey <address@hidden>
Use mpz_import in mpz_set_uintmax_slow
* src/alloc.c (mpz_set_uintmax_slow): Use mpz_import.
---
src/alloc.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/alloc.c b/src/alloc.c
index edfb87e..1504d79 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3874,12 +3874,12 @@ mpz_set_uintmax_slow (mpz_t result, uintmax_t v)
{
/* If long is larger then a faster path is taken. */
eassert (sizeof (uintmax_t) > sizeof (unsigned long));
- /* This restriction could be lifted if needed. */
- eassert (sizeof (uintmax_t) <= 2 * sizeof (unsigned long));
- mpz_set_ui (result, v >> (CHAR_BIT * sizeof (unsigned long)));
- mpz_mul_2exp (result, result, CHAR_BIT * sizeof (unsigned long));
- mpz_add_ui (result, result, v & -1ul);
+ /* COUNT = 1 means just a single word of the given size. ORDER = -1
+ is arbitrary since there's only a single word. ENDIAN = 0 means
+ use the native endian-ness. NAILS = 0 means use the whole
+ word. */
+ mpz_import (result, 1, -1, sizeof (uintmax_t), 0, 0, &v);
}