crosstool-ng/patches/gmp/5.1.1/110-mpz_powm_ui.patch
Kirill K. Smirnov bcb6b03df9 patches: add patches for gmp
This changeset adds official patches published on gmp website.

Signed-off-by: Kirill K. Smirnov <kirill.k.smirnov@gmail.com>
2016-09-18 00:57:43 +03:00

40 lines
1.3 KiB
Diff

# HG changeset patch
# User Torbjorn Granlund <tege@gmplib.org>
# Date 1363174284 -3600
# Node ID ec4d88674036804b26f22c6a2bfca6ae1e92d370
# Parent e616ff715c34e112d0a5f7535d31ffe1194a5c7d
(mod): Adhere to mpn_mu_div_qr's overlap requirements.
diff -r e616ff715c34 -r ec4d88674036 mpz/powm_ui.c
--- a/mpz/powm_ui.c Sun Feb 17 19:40:16 2013 +0100
+++ b/mpz/powm_ui.c Wed Mar 13 12:31:24 2013 +0100
@@ -2,8 +2,8 @@
Contributed to the GNU project by Torbjorn Granlund.
-Copyright 1991, 1993, 1994, 1996, 1997, 2000, 2001, 2002, 2005, 2008,
-2009, 2011, 2012 Free Software Foundation, Inc.
+Copyright 1991, 1993, 1994, 1996, 1997, 2000, 2001, 2002, 2005, 2008, 2009,
+2011, 2012, 2013 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@@ -70,9 +70,14 @@
}
else
{
+ /* We need to allocate separate remainder area, since mpn_mu_div_qr does
+ not handle overlap between the numerator and remainder areas.
+ FIXME: Make it handle such overlap. */
+ mp_ptr rp = TMP_ALLOC_LIMBS (dn);
mp_size_t itch = mpn_mu_div_qr_itch (nn, dn, 0);
mp_ptr scratch = TMP_ALLOC_LIMBS (itch);
- mpn_mu_div_qr (qp, np, np, nn, dp, dn, scratch);
+ mpn_mu_div_qr (qp, rp, np, nn, dp, dn, scratch);
+ MPN_COPY (np, rp, dn);
}
TMP_FREE;