texlive[56937] Build/source/libs: gmp-6.2.1

commits+kakuto at tug.org commits+kakuto at tug.org
Sun Nov 15 08:20:52 CET 2020


Revision: 56937
          http://tug.org/svn/texlive?view=revision&revision=56937
Author:   kakuto
Date:     2020-11-15 08:20:51 +0100 (Sun, 15 Nov 2020)
Log Message:
-----------
gmp-6.2.1

Modified Paths:
--------------
    trunk/Build/source/libs/README
    trunk/Build/source/libs/gmp/ChangeLog
    trunk/Build/source/libs/gmp/README
    trunk/Build/source/libs/gmp/TLpatches/ChangeLog
    trunk/Build/source/libs/gmp/TLpatches/TL-Changes
    trunk/Build/source/libs/gmp/configure
    trunk/Build/source/libs/gmp/gmp-src/ChangeLog
    trunk/Build/source/libs/gmp/gmp-src/Makefile.am
    trunk/Build/source/libs/gmp/gmp-src/NEWS
    trunk/Build/source/libs/gmp/gmp-src/configgmp.guess
    trunk/Build/source/libs/gmp/gmp-src/configure.ac
    trunk/Build/source/libs/gmp/gmp-src/gmp-h.in
    trunk/Build/source/libs/gmp/gmp-src/gmp-impl.h
    trunk/Build/source/libs/gmp/gmp-src/longlong.h
    trunk/Build/source/libs/gmp/gmp-src/mini-gmp/mini-gmp.c
    trunk/Build/source/libs/gmp/gmp-src/mini-gmp/mini-gmp.h
    trunk/Build/source/libs/gmp/gmp-src/mini-gmp/mini-mpq.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/bdiv_q_1.asm
    trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/invert_limb.asm
    trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/lshift.asm
    trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/lshiftc.asm
    trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/rshift.asm
    trunk/Build/source/libs/gmp/gmp-src/mpn/generic/compute_powtab.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/generic/dcpi1_bdiv_q.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/generic/gcd_22.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/generic/get_d.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/generic/get_str.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/generic/hgcd2.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/generic/mod_1_1.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/generic/mul_fft.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/generic/set_str.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/generic/strongfibo.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/generic/toom_interpolate_12pts.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/generic/toom_interpolate_16pts.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/powerpc64/mode64/p9/addmul_2.asm
    trunk/Build/source/libs/gmp/gmp-src/mpn/powerpc64/mode64/p9/mul_2.asm
    trunk/Build/source/libs/gmp/gmp-src/mpn/x86/fat/fat.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/bd2/gcd_22.asm
    trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/fat/fat.c
    trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/skylake/gmp-mparam.h
    trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/x86_64-defs.m4
    trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/zen2/gmp-mparam.h
    trunk/Build/source/libs/gmp/gmp-src/mpq/cmp.c
    trunk/Build/source/libs/gmp/gmp-src/mpz/cmp.c
    trunk/Build/source/libs/gmp/gmp-src/mpz/millerrabin.c
    trunk/Build/source/libs/gmp/gmp-src/mpz/mul.c
    trunk/Build/source/libs/gmp/gmp-src/mpz/n_pow_ui.c
    trunk/Build/source/libs/gmp/version.ac

Added Paths:
-----------
    trunk/Build/source/libs/gmp/gmp-src/mini-gmp/ChangeLog
    trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/arm64-defs.m4
    trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/darwin.m4

Modified: trunk/Build/source/libs/README
===================================================================
--- trunk/Build/source/libs/README	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/README	2020-11-15 07:20:51 UTC (rev 56937)
@@ -18,7 +18,7 @@
 gd 2.3.0 - checked 10apr20
   https://github.com/libgd/libgd/releases
 
-gmp 6.2.0 - checked 20jan20
+gmp 6.2.1 - checked 15nov20
   http://ftp.gnu.org/gnu/gmp/
 
 graphite2 1.3.14 - checked 10apr20

Modified: trunk/Build/source/libs/gmp/ChangeLog
===================================================================
--- trunk/Build/source/libs/gmp/ChangeLog	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/ChangeLog	2020-11-15 07:20:51 UTC (rev 56937)
@@ -1,3 +1,8 @@
+2020-11-15  Akira Kakuto  <kakuto at w32tex.org>
+
+	Import gmp-6.2.1.
+	* version.ac: Update for 6.2.1.
+
 2020-07-12  Akira Kakuto  <kakuto at w32tex.org>
 
 	* Makefile.am: Add mpz/set_si.c for mpfr-4.1.0.

Modified: trunk/Build/source/libs/gmp/README
===================================================================
--- trunk/Build/source/libs/gmp/README	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/README	2020-11-15 07:20:51 UTC (rev 56937)
@@ -15,4 +15,4 @@
 =============================
 
 2014-03-31	Taco Hoekwater <taco at metatex.org>
-2020-01-20	Akira Kakuto <kakuto at fuk.kindai.ac.jp>
+2020-11-15	Akira Kakuto <kakuto at w32tex.org>

Modified: trunk/Build/source/libs/gmp/TLpatches/ChangeLog
===================================================================
--- trunk/Build/source/libs/gmp/TLpatches/ChangeLog	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/TLpatches/ChangeLog	2020-11-15 07:20:51 UTC (rev 56937)
@@ -1,3 +1,7 @@
+2020-11-15  Akira Kakuto  <kakuto at w32tex.org>
+
+	* Import 6.2.1.
+
 2020-01-20  Akira Kakuto  <kakuto at w32tex.org>
 
 	* Import 6.2.0.

Modified: trunk/Build/source/libs/gmp/TLpatches/TL-Changes
===================================================================
--- trunk/Build/source/libs/gmp/TLpatches/TL-Changes	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/TLpatches/TL-Changes	2020-11-15 07:20:51 UTC (rev 56937)
@@ -1,4 +1,4 @@
-Changes applied to the gmp-6.2.0/ tree as obtained from:
+Changes applied to the gmp-6.2.1/ tree as obtained from:
 	http://ftp.gnu.org/gnu/gmp/
 
 Removed:

Modified: trunk/Build/source/libs/gmp/configure
===================================================================
--- trunk/Build/source/libs/gmp/configure	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/configure	2020-11-15 07:20:51 UTC (rev 56937)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for gmp (TeX Live) 6.2.0.
+# Generated by GNU Autoconf 2.69 for gmp (TeX Live) 6.2.1.
 #
 # Report bugs to <tex-k at tug.org>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='gmp (TeX Live)'
 PACKAGE_TARNAME='gmp--tex-live-'
-PACKAGE_VERSION='6.2.0'
-PACKAGE_STRING='gmp (TeX Live) 6.2.0'
+PACKAGE_VERSION='6.2.1'
+PACKAGE_STRING='gmp (TeX Live) 6.2.1'
 PACKAGE_BUGREPORT='tex-k at tug.org'
 PACKAGE_URL=''
 
@@ -1294,7 +1294,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures gmp (TeX Live) 6.2.0 to adapt to many kinds of systems.
+\`configure' configures gmp (TeX Live) 6.2.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1364,7 +1364,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of gmp (TeX Live) 6.2.0:";;
+     short | recursive ) echo "Configuration of gmp (TeX Live) 6.2.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1461,7 +1461,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-gmp (TeX Live) configure 6.2.0
+gmp (TeX Live) configure 6.2.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1976,7 +1976,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by gmp (TeX Live) $as_me 6.2.0, which was
+It was created by gmp (TeX Live) $as_me 6.2.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3900,7 +3900,7 @@
 
 # Define the identity of the package.
  PACKAGE='gmp--tex-live-'
- VERSION='6.2.0'
+ VERSION='6.2.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -7004,7 +7004,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by gmp (TeX Live) $as_me 6.2.0, which was
+This file was extended by gmp (TeX Live) $as_me 6.2.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -7070,7 +7070,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-gmp (TeX Live) config.status 6.2.0
+gmp (TeX Live) config.status 6.2.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

Modified: trunk/Build/source/libs/gmp/gmp-src/ChangeLog
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/ChangeLog	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/ChangeLog	2020-11-15 07:20:51 UTC (rev 56937)
@@ -1,3 +1,204 @@
+2020-11-13 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* Version 6.2.1 released.
+
+	* gmp-h.in (__GNU_MP_VERSION_PATCHLEVEL): Bump version info.
+	* Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump revision info.
+
+2020-11-10 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* configure.ac (fat_path): Add bd1, goldmont,silvermont for CPUVEC.
+	* mpn/x86_64/fat/fat.c: Add more CPUs.
+	* mpn/x86/fat/fat.c: Add more CPUs.
+
+2020-11-01 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* configure.ac: X86_{,64_}PATTERN: GMP_ASM_COFF_TYPE for all ABIs;
+	* mpn/x86_64/x86_64-defs.m4 (COFF_TYPE): Copy from mpn/x86/x86-defs.m4
+	as suggested by Jeremy Drake.
+
+	* tests/misc/t-locale.c (nl_langinfo): No redefine on __TERMUX__,
+	spotted by Sanselme and Glisse.
+	* configure.ac: Consider *-*-msys as *-*-mingw* (except on arm* |
+	aarch64*), as suggested by Ralph Peterson.
+	* Makefile.am (EXTRA_DIST): Add mini-gmp/ChangeLog.
+
+2020-10-30 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/mpf/t-get_d_2exp.c: Test also the case zero.
+	* tests/mpz/t-get_d.c: Likewise.
+	* tests/mpf/t-trunc.c: Use mpf_size.
+
+	* tests/mpf/t-conv.c: Some more tests on zero.
+
+2020-10-25 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* configfsf.guess: Updated to version 2020-10-22, from gnulib.
+
+2020-10-17 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/devel/Makefile.am: Remove redundancies.
+
+	* tests/mpz/io.c: Test out-of-range bases for mpz_out_str.
+
+2020-10-15  Torbjörn Granlund  <tg at gmplib.org>
+
+	* configure.ac: Recognise zen3.
+	* config.guess: Recognise zen3.
+
+2020-10-14 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* doc/gmp.texi (Number sequences): Remove redundancy. (spotted: TonyMcC)
+
+	* configfsf.sub: Updated to version 2020-10-13, from gnulib.
+	* configfsf.guess: Updated to version 2020-09-19, from gnulib.
+
+2020-10-06  Niels Möller  <nisse at lysator.liu.se>
+
+	* Makefile.am: Better support for make check-mini-gmp on wine or cygwin.
+
+2020-09-22  Torbjörn Granlund  <tg at gmplib.org>
+
+	* tests/mpz/t-mul.c: Print GMP_CHECK_FFT.
+
+	* longlong.h (x86 umul_ppmm): Fix typo.
+
+2020-09-21  Torbjörn Granlund  <tg at gmplib.org>
+
+	* mpz/n_pow_ui.c: Detect and report overflow.
+
+2020-07-04  Torbjörn Granlund  <tg at gmplib.org>
+
+	* mpn/arm64/bdiv_q_1.asm: Use LEA_HI/LEA_LO
+	* mpn/arm64/invert_limb.asm: Likewise.
+
+	* mpn/arm64/arm64-defs.m4: New file.
+	* mpn/arm64/darwin.m4: New file.
+	* configure.ac: Use arm64/arm64-defs.m4 and arm64/darwin.m4.
+
+2020-06-20  Torbjörn Granlund  <tg at gmplib.org>
+
+	* longlong.h (add_sssaaaa arm32/arm64): Generalise allowed operands
+	when using adds for sub and subs for add, while disallowing 0.
+	(sub_ddmmss ppc64): Disallow 0 when using addic.  Also disallow
+	constants for register-only middle addic operand.
+	(C add_sssaaaa and sub_ddmmss): Use more temps to make operation more
+	well-defined.
+
+2020-06-18  Torbjörn Granlund  <tg at gmplib.org>
+
+	* tests/devel/gen-test-longlong_h.c: New file.
+	* tests/devel/Makefile.am: Compile and use gen-test-longlong_h.c.
+
+2020-06-10  Torbjörn Granlund  <tg at gmplib.org>
+
+	* configure.ac: Recognise armcortexa55.
+
+2020-05-25  Torbjörn Granlund  <tg at gmplib.org>
+
+	* tests/cxx/t-assign.cc: Use reference parameter for 'catch'.
+	* tests/cxx/t-constr.cc: Likewise.
+	* tests/cxx/t-ops2z.cc: Likewise.
+	* tests/cxx/t-rand.cc: Likewise.
+	* tests/cxx/t-do-exceptions-work-at-all-with-this-compiler.cc: Likewise.
+
+	* tune/speed.c: Undo 2020-05-24 _POSIX_C_SOURCE change, it breaks on
+	many broken systems.
+	* tune/freq.c: Likewise.
+	* tune/time.c: Likewise.
+	* tune/tuneup.c: Likewise.
+
+	* tests/devel/try.c: Revert 2020-05-24 changes.
+
+2020-05-21  Torbjörn Granlund  <tg at gmplib.org>
+
+	* tune/freq.c (_POSIX_C_SOURCE): Define.
+
+	* tune/tuneup.c (print_define_with_speedup): Fall back from snprintf to
+	sprintf for C90.
+	(_POSIX_C_SOURCE): Define.
+	(max_opsize): Set by #define instead of const size_t to please C90.
+	(n_measurements): Likewise.
+	(speed_mpn_pre_set_str): Adhere to C90 declaration rules.
+
+	* tune/tune-gcd-p.c: Back out 2020-01-10 change to comply to C90.
+
+	* tune/time.c (speed_endtime): Cast printf args to right type.
+	(_POSIX_C_SOURCE): Define.
+
+	* tune/speed.h (CACHE_LINE_SIZE): Do #undef before defining.
+	(SPEED_ROUTINE_MPN_GCD_1): Provide dummy first argument for standard
+	compliance.
+	(SPEED_ROUTINE_MPN_HGCD2): Adhere to C90 declaration rules.
+
+	* tune/speed.c (main): Cast printf args to right type.
+	(_POSIX_C_SOURCE): Define.
+
+	* tests/mpz/reuse.c: Avoid using non-standard function fileno().
+	* tests/spinner.c: Likewise.
+
+	* tests/mpz/convert.c (str_casecmp): New function.
+	(main): Use it instead of non-standard strcasecmp.
+
+	* tests/misc.c (tests_start): Fall back from snprintf to sprintf for
+	C90.
+
+	* tests/devel/try.c: Avoid getpagesize and use POSIX sysconf instead.
+	(_POSIX_C_SOURCE): Define.
+
+	* mpn/generic/mod_1_1.c: Don't use C++ comments.
+
+	* mpn/generic/get_d.c: Add clarifying parens.
+
+2020-05-18  Torbjörn Granlund  <tg at gmplib.org>
+
+	* mpn/generic/toom_interpolate_12pts.c (DO_mpn_addlsh_n): Define only
+	when needed.
+	* mpn/generic/toom_interpolate_16pts.c: Likewise.
+
+2020-05-17 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mpz/cmp.c: Avoid overflow on int even for huge sizes.
+	* mpq/cmp.c: Likewise.
+
+	* mpn/generic/mul_fft.c (mpn_fft_mul_modF_K):
+	Fully handle carry propagation in basecase multiplication.
+
+2020-05-16  Torbjörn Granlund  <tg at gmplib.org>
+
+	* mpn/generic/hgcd2.c (tabp): Combine several undefined tabp
+	variable definitions with a macro.
+
+	* mpn/generic/gcd_22.c: Avoid C99 constructs.
+
+2020-05-12  Torbjörn Granlund  <tg at gmplib.org>
+
+	* mpn/generic/compute_powtab.c: Avoid C99 constructs.
+	* mpn/generic/get_str.c: Likewise.
+	* mpn/generic/set_str.c: Likewise.
+
+	* gmp-impl.h (memset): Move ASSERT to before decls.
+	* tests/refmpn.c: Likewise.
+
+	* mpn/generic/hgcd2.c (tabp): Combine several undefined tabp variable
+	definitions with a macro.
+
+	* mpn/generic/strongfibo.c: Avoid defining helper function when unused.
+
+	* mpn/generic/dcpi1_bdiv_q.c (mpn_dcpi1_bdiv_q_n_itch): Disable unused
+	static function.
+
+	* mpz/mul.c: Add some {} to suppress warning.
+
+	* tests/mpn/t-gcd_11.c: Exit main() properly.
+	* tests/mpn/t-gcd_22.c: Likewise.
+	* tests/mpn/t-gcdext_1.c: Likewise.
+
+2020-04-28  Torbjörn Granlund  <tg at gmplib.org>
+
+	* tests/mpz/reuse.c (realloc_if_reducing): New function.
+	(INVOKE_RRS, etc): Use realloc_if_reducing.
+
 2020-01-17  Torbjörn Granlund  <tg at gmplib.org>
 
 	* Version 6.2.0 released.

Modified: trunk/Build/source/libs/gmp/gmp-src/Makefile.am
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/Makefile.am	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/Makefile.am	2020-11-15 07:20:51 UTC (rev 56937)
@@ -90,6 +90,7 @@
 #        6.1.1   13:1:3    9:1:5     -
 #        6.1.2   13:2:3    9:2:5     -
 #        6.2.0   14:0:4   10:0:6     -
+#        6.2.1   14:1:4   10:1:6     -
 #
 # Starting at 3:0:0 is a slight abuse of the versioning system, but it
 # ensures we're past soname libgmp.so.2, which was used on Debian GNU/Linux
@@ -103,11 +104,11 @@
 # libgmpxx.so.3.0.4) incrementing, to make it clear which GMP it's from.
 
 LIBGMP_LT_CURRENT    = 14
-LIBGMP_LT_REVISION   = 0
+LIBGMP_LT_REVISION   = 1
 LIBGMP_LT_AGE        = 4
 
 LIBGMPXX_LT_CURRENT  = 10
-LIBGMPXX_LT_REVISION = 0
+LIBGMPXX_LT_REVISION = 1
 LIBGMPXX_LT_AGE      = 6
 
 
@@ -412,7 +413,7 @@
 
 # Distribute mini-gmp. Test sources copied by dist-hook.
 EXTRA_DIST += mini-gmp/README mini-gmp/mini-gmp.c mini-gmp/mini-gmp.h \
-	      mini-gmp/mini-mpq.c mini-gmp/mini-mpq.h \
+	      mini-gmp/ChangeLog mini-gmp/mini-mpq.c mini-gmp/mini-mpq.h \
 	      mini-gmp/tests/Makefile mini-gmp/tests/run-tests
 
 # Avoid: CVS - cvs directories
@@ -436,7 +437,7 @@
 	abs_srcdir="`cd $(srcdir) && pwd`" ; \
 	$(MKDIR_P) mini-gmp/tests \
 	&& cd mini-gmp/tests \
-	&& TEST_LIBRARY_PATH="../../.libs"  \
+	&& TEST_SHLIB_DIR="${abs_top_builddir}/.libs" \
 	   $(MAKE) -f "$$abs_srcdir/mini-gmp/tests/Makefile" \
 		VPATH="$$abs_srcdir/mini-gmp/tests" \
 		srcdir="$$abs_srcdir/mini-gmp/tests" \

Modified: trunk/Build/source/libs/gmp/gmp-src/NEWS
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/NEWS	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/NEWS	2020-11-15 07:20:51 UTC (rev 56937)
@@ -3,6 +3,31 @@
 Verbatim copying and distribution of this entire article is permitted in any
 medium, provided this notice is preserved.
 
+Changes between GMP version 6.2.0 and 6.2.1
+
+  BUGS FIXED
+  * A possible overflow of type int is avoided for mpz_cmp on huge operands.
+
+  * Overflows are more carefully detected and reported for mpz_pow_ui.
+
+  * A bug in longlong.h for aarch64 sub_ddmmss, not affecting GMP, was healed.
+
+  * mini-gmp: mpz_out_str and mpq_out_str now correctly handle out of
+    range bases.
+
+  FEATURES
+  * C90 compliance.
+
+  * Initial support for Darwin on arm64, and improved portability.
+
+  * Support for more processors.
+
+  SPEEDUPS
+  * None, except indirectly through recognition of new CPUs.
+
+  MISC
+  * None.
+
 Changes between GMP version 6.1.* and 6.2.0
 
   BUGS FIXED

Modified: trunk/Build/source/libs/gmp/gmp-src/configgmp.guess
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/configgmp.guess	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/configgmp.guess	2020-11-15 07:20:51 UTC (rev 56937)
@@ -992,9 +992,19 @@
 	    default:
 	      modelstr = "zen2";
 	      break;
-	  }
+	    }
+	  break;
+	case 25:		/* Zen 3 */
+	  cpu_64bit = 1, cpu_avx = 1;
+	  modelstr = "zen3";
+	  break;
 	}
     }
+  else if (strcmp (vendor_string, "HygonGenuine") == 0)
+    {
+      cpu_64bit = 1, cpu_avx = 1;
+      modelstr = "zen";
+    }
   else if (strcmp (vendor_string, "CyrixInstead") == 0)
     {
       /* Should recognize Cyrix' processors too.  */

Modified: trunk/Build/source/libs/gmp/gmp-src/configure.ac
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/configure.ac	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/configure.ac	2020-11-15 07:20:51 UTC (rev 56937)
@@ -722,7 +722,7 @@
 	gcc_cflags_neon="-mfpu=neon"
 	gcc_cflags_tune="-mtune=cortex-a15 -mtune=cortex-a9"
 	;;
-      armcortexa53 | armcortexa53neon)
+      armcortexa53 | armcortexa53neon | armcortexa55 | armcortexa55neon)
         abilist="64 32"
 	path="arm/neon arm/v7a/cora9 arm/v6t2 arm/v6 arm/v5 arm"
 	path_64="arm64/cora53 arm64"
@@ -1889,7 +1889,7 @@
 	x86_have_mulx=yes
 	path_64="x86_64/zen x86_64"
 	;;
-      zen2 | zen2noavx)
+      zen2 | zen2noavx | zen3 | zen3noavx)
 	gcc_cflags_cpu="-mtune=znver2 -mtune=znver1 -mtune=amdfam10 -mtune=k8"
 	gcc_cflags_arch="-march=znver2 -march=znver1 -march=amdfam10 -march=k8"
 	path="x86/k7/mmx x86/k7 x86/mmx x86"
@@ -2011,7 +2011,7 @@
 	    # Sun cc.
 	    cc_64_cflags="-xO3 -m64"
 	    ;;
-	  *-*-mingw* | *-*-cygwin)
+	  *-*-mingw* | *-*-msys | *-*-cygwin)
 	    limb_64=longlong
 	    CALLING_CONVENTIONS_OBJS_64=""
 	    AC_DEFINE(HOST_DOS64,1,[Define to 1 for Windos/64])
@@ -2037,7 +2037,7 @@
 # x86s, but allow any CPU here so as to catch "none" too.
 #
 case $host in
-  *-*-mingw*)
+  *-*-mingw* | *-*-msys)
     gcc_cflags_optlist="$gcc_cflags_optlist nocygwin"
     gcc_cflags_nocygwin="-mno-cygwin"
     ;;
@@ -2291,11 +2291,12 @@
 	fat_path="x86 x86/fat x86/i486
 		  x86/k6 x86/k6/mmx x86/k6/k62mmx
 		  x86/k7 x86/k7/mmx
-		  x86/k8 x86/k10 x86/bt1
+		  x86/k8 x86/k10 x86/bt1 x86/bd1
 		  x86/pentium x86/pentium/mmx
 		  x86/p6 x86/p6/mmx x86/p6/p3mmx x86/p6/sse2
 		  x86/pentium4 x86/pentium4/mmx x86/pentium4/sse2
 		  x86/core2 x86/coreinhm x86/coreisbr
+		  x86/goldmont x86/silvermont
 		  x86/atom x86/atom/mmx x86/atom/sse2 x86/nano"
       fi
 
@@ -2664,7 +2665,7 @@
 
 AC_SUBST(LIBGMP_DLL,0)
 case $host in
-  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+  *-*-cygwin* | *-*-mingw* | *-*-msys | *-*-pw32* | *-*-os2*)
     # By default, build only static.
     if test -z "$enable_shared"; then
       enable_shared=no
@@ -3699,6 +3700,14 @@
       case $ABI in
         32)
 	  GMP_INCLUDE_MPN(arm/arm-defs.m4) ;;
+        64)
+	  case $host in
+	    *-*-darwin*)
+	      GMP_INCLUDE_MPN(arm64/darwin.m4) ;;
+	    *)
+	      GMP_INCLUDE_MPN(arm64/arm64-defs.m4) ;;
+          esac
+	  ;;
       esac
       ;;
     hppa*-*-*)
@@ -3774,11 +3783,11 @@
       if test "$x86_have_mulx" = yes; then
         GMP_ASM_X86_MULX
       fi
+      GMP_ASM_COFF_TYPE
       case $ABI in
         32)
           GMP_INCLUDE_MPN(x86/x86-defs.m4)
           AC_DEFINE(HAVE_HOST_CPU_FAMILY_x86)
-          GMP_ASM_COFF_TYPE
           GMP_ASM_X86_GOT_UNDERSCORE
           GMP_ASM_X86_SHLDL_CL
 	  case $enable_profiling in
@@ -3795,7 +3804,7 @@
 	  case $host in
 	    *-*-darwin*)
 	      GMP_INCLUDE_MPN(x86_64/darwin.m4) ;;
-	    *-*-mingw* | *-*-cygwin)
+	    *-*-mingw* | *-*-msys | *-*-cygwin)
 	      GMP_INCLUDE_MPN(x86_64/dos64.m4) ;;
 	    *-openbsd*)
 	      GMP_DEFINE_RAW(["define(<OPENBSD>,1)"]) ;;

Modified: trunk/Build/source/libs/gmp/gmp-src/gmp-h.in
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/gmp-h.in	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/gmp-h.in	2020-11-15 07:20:51 UTC (rev 56937)
@@ -2329,7 +2329,7 @@
 /* Major version number is the value of __GNU_MP__ too, above. */
 #define __GNU_MP_VERSION            6
 #define __GNU_MP_VERSION_MINOR      2
-#define __GNU_MP_VERSION_PATCHLEVEL 0
+#define __GNU_MP_VERSION_PATCHLEVEL 1
 #define __GNU_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL)
 
 #define __GMP_H__

Modified: trunk/Build/source/libs/gmp/gmp-src/gmp-impl.h
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/gmp-impl.h	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/gmp-impl.h	2020-11-15 07:20:51 UTC (rev 56937)
@@ -289,13 +289,13 @@
 #endif
 
 #if ! HAVE_MEMSET
-#define memset(p, c, n)			\
-  do {					\
-    ASSERT ((n) >= 0);			\
-    char *__memset__p = (p);		\
-    int	 __i;				\
-    for (__i = 0; __i < (n); __i++)	\
-      __memset__p[__i] = (c);		\
+#define memset(p, c, n)						\
+  do {								\
+    unsigned char *__memset__p = (unsigned char *) (p);		\
+    int	 __i;							\
+    ASSERT ((n) >= 0);						\
+    for (__i = 0; __i < (n); __i++)				\
+      __memset__p[__i] = (c);					\
   } while (0)
 #endif
 

Modified: trunk/Build/source/libs/gmp/gmp-src/longlong.h
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/longlong.h	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/longlong.h	2020-11-15 07:20:51 UTC (rev 56937)
@@ -436,7 +436,7 @@
     && W_TYPE_SIZE == 32
 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
   do {									\
-    if (__builtin_constant_p (bl) && -(USItype)(bl) < 0x100)		\
+    if (__builtin_constant_p (bl) && -(USItype)(bl) < (USItype)(bl))	\
       __asm__ ("subs\t%1, %4, %5\n\tadc\t%0, %2, %3"			\
 	   : "=r" (sh), "=&r" (sl)					\
 	       : "r" (ah), "rI" (bh),					\
@@ -447,8 +447,8 @@
 	   : "r" (ah), "rI" (bh), "%r" (al), "rI" (bl) __CLOBBER_CC);	\
   } while (0)
 /* FIXME: Extend the immediate range for the low word by using both ADDS and
-   SUBS, since they set carry in the same way.  Note: We need separate
-   definitions for thumb and non-thumb to to th absense of RSC under thumb.  */
+   SUBS, since they set carry in the same way.  We need separate definitions
+   for thumb and non-thumb since thumb lacks RSC.  */
 #if defined (__thumb__)
 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
   do {									\
@@ -504,7 +504,7 @@
       __asm__ ("subs\t%1, %4, %5\n\tsbc\t%0, %2, %3"			\
 	       : "=r" (sh), "=&r" (sl)					\
 	       : "r" (ah), "rI" (bh), "r" (al), "rI" (bl) __CLOBBER_CC); \
-    else /* only bh might be a constant */				\
+    else								\
       __asm__ ("subs\t%1, %4, %5\n\tsbc\t%0, %2, %3"			\
 	       : "=r" (sh), "=&r" (sl)					\
 	       : "r" (ah), "rI" (bh), "r" (al), "rI" (bl) __CLOBBER_CC); \
@@ -560,11 +560,9 @@
 #endif /* __arm__ */
 
 #if defined (__aarch64__) && W_TYPE_SIZE == 64
-/* FIXME: Extend the immediate range for the low word by using both
-   ADDS and SUBS, since they set carry in the same way.  */
 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
   do {									\
-    if (__builtin_constant_p (bl) && -(UDItype)(bl) < 0x1000)		\
+    if (__builtin_constant_p (bl) && ~(UDItype)(bl) <= (UDItype)(bl))	\
       __asm__ ("subs\t%1, %x4, %5\n\tadc\t%0, %x2, %x3"			\
 	       : "=r" (sh), "=&r" (sl)					\
 	       : "rZ" ((UDItype)(ah)), "rZ" ((UDItype)(bh)),		\
@@ -577,7 +575,7 @@
   } while (0)
 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
   do {									\
-    if (__builtin_constant_p (bl) && -(UDItype)(bl) < 0x1000)		\
+    if (__builtin_constant_p (bl) && ~(UDItype)(bl) <= (UDItype)(bl))	\
       __asm__ ("adds\t%1, %x4, %5\n\tsbc\t%0, %x2, %x3"			\
 	       : "=r,r" (sh), "=&r,&r" (sl)				\
 	       : "rZ,rZ" ((UDItype)(ah)), "rZ,rZ" ((UDItype)(bh)),	\
@@ -1056,7 +1054,7 @@
    && (HAVE_HOST_CPU_haswell || HAVE_HOST_CPU_broadwell \
        || HAVE_HOST_CPU_skylake || HAVE_HOST_CPU_bd4 || HAVE_HOST_CPU_zen)
 #define umul_ppmm(w1, w0, u, v) \
-  __asm__ ("mulx\t%3, %0, %1"						\
+  __asm__ ("mulx\t%3, %q0, %q1"						\
 	   : "=r" (w0), "=r" (w1)					\
 	   : "%d" ((UDItype)(u)), "rm" ((UDItype)(v)))
 #else
@@ -1494,36 +1492,37 @@
    This might seem strange, but gcc folds away the dead code late.  */
 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
   do {									\
-    if (__builtin_constant_p (bl) && bl > -0x8000 && bl <= 0x8000) {	\
+    if (__builtin_constant_p (bl)					\
+	&& (bl) > -0x8000 && (bl) <= 0x8000 && (bl) != 0) {		\
 	if (__builtin_constant_p (ah) && (ah) == 0)			\
 	  __asm__ ("addic %1,%3,%4\n\tsubfze %0,%2"			\
 		   : "=r" (sh), "=&r" (sl)				\
 		   :                       "r" ((UDItype)(bh)),		\
-		     "rI" ((UDItype)(al)), "*rI" (-((UDItype)(bl)))	\
+		     "r" ((UDItype)(al)), "*rI" (-((UDItype)(bl)))	\
 		     __CLOBBER_CC);					\
 	else if (__builtin_constant_p (ah) && (ah) == ~(UDItype) 0)	\
 	  __asm__ ("addic %1,%3,%4\n\tsubfme %0,%2"			\
 		   : "=r" (sh), "=&r" (sl)				\
 		   :                       "r" ((UDItype)(bh)),		\
-		     "rI" ((UDItype)(al)), "*rI" (-((UDItype)(bl)))	\
+		     "r" ((UDItype)(al)), "*rI" (-((UDItype)(bl)))	\
 		     __CLOBBER_CC);					\
 	else if (__builtin_constant_p (bh) && (bh) == 0)		\
 	  __asm__ ("addic %1,%3,%4\n\taddme %0,%2"			\
 		   : "=r" (sh), "=&r" (sl)				\
-		   : "r"  ((UDItype)(ah)),				\
-		     "rI" ((UDItype)(al)), "*rI" (-((UDItype)(bl)))	\
+		   : "r" ((UDItype)(ah)),				\
+		     "r" ((UDItype)(al)), "*rI" (-((UDItype)(bl)))	\
 		     __CLOBBER_CC);					\
 	else if (__builtin_constant_p (bh) && (bh) == ~(UDItype) 0)	\
 	  __asm__ ("addic %1,%3,%4\n\taddze %0,%2"			\
 		   : "=r" (sh), "=&r" (sl)				\
-		   : "r"  ((UDItype)(ah)),				\
-		     "rI" ((UDItype)(al)), "*rI" (-((UDItype)(bl)))	\
+		   : "r" ((UDItype)(ah)),				\
+		     "r" ((UDItype)(al)), "*rI" (-((UDItype)(bl)))	\
 		     __CLOBBER_CC);					\
 	else								\
 	  __asm__ ("addic %1,%4,%5\n\tsubfe %0,%3,%2"			\
 		   : "=r" (sh), "=&r" (sl)				\
-		   : "r"  ((UDItype)(ah)), "r" ((UDItype)(bh)),		\
-		     "rI" ((UDItype)(al)), "*rI" (-((UDItype)(bl)))	\
+		   : "r" ((UDItype)(ah)), "r" ((UDItype)(bh)),		\
+		     "r" ((UDItype)(al)), "*rI" (-((UDItype)(bl)))	\
 		     __CLOBBER_CC);					\
     } else {								\
 	if (__builtin_constant_p (ah) && (ah) == 0)			\
@@ -2056,8 +2055,10 @@
 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
   do {									\
     UWtype __x;								\
-    __x = (al) + (bl);							\
-    (sh) = (ah) + (bh) + (__x < (al));					\
+    UWtype __al = (al);							\
+    UWtype __bl = (bl);							\
+    __x = __al + __bl;							\
+    (sh) = (ah) + (bh) + (__x < __al);					\
     (sl) = __x;								\
   } while (0)
 #endif
@@ -2066,8 +2067,10 @@
 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
   do {									\
     UWtype __x;								\
-    __x = (al) - (bl);							\
-    (sh) = (ah) - (bh) - ((al) < (bl));					\
+    UWtype __al = (al);							\
+    UWtype __bl = (bl);							\
+    __x = __al - __bl;							\
+    (sh) = (ah) - (bh) - (__al < __bl);					\
     (sl) = __x;								\
   } while (0)
 #endif

Added: trunk/Build/source/libs/gmp/gmp-src/mini-gmp/ChangeLog
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mini-gmp/ChangeLog	                        (rev 0)
+++ trunk/Build/source/libs/gmp/gmp-src/mini-gmp/ChangeLog	2020-11-15 07:20:51 UTC (rev 56937)
@@ -0,0 +1,673 @@
+2020-11-10 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/run-tests: Update WINEPATH, instead of overwriting it.
+
+2020-10-25 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-mpq.c (mpq_canonical_sign): Use the correct type for size.
+
+2020-10-18 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-mpq.c (mpq_out_str): Return 0 when base is out of range.
+	* mini-gmp.c (mpz_out_str): Likewise. (spotted by Paul Eggert)
+
+	* tests/t-str.c: Test out-of-range bases for mpz_out_str.
+	* tests/t-mpq_str.c: Likewise, for mpq_out_str.
+
+2020-10-06  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/run-tests: Better support for make check on wine or cygwin.
+
+2020-09-10 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/t-mpq_double.c (mpq_get_d_exact_p): Cleanup.
+
+	* mini-gmp.h: Update FILE tests from gmp-h (tx Vincent Lefèvre).
+
+2020-05-21  Torbjörn Granlund  <tg at gmplib.org>
+
+	* tests/t-mpq_muldiv_2exp.c (testmain): Cast printf args to right type.
+
+	* tests/t-double.c: Provide default M_PI definition.
+
+2020-05-19  Torbjörn Granlund  <tg at gmplib.org>
+
+	* tests/hex-random.h (enum hex_random_op): Remove final ",".
+
+2019-12-04 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp/mini-gmp.c (mpn_invert_3by2): Remove shortcuts.
+
+2019-11-19 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp/mini-gmp.c (mpn_invert_3by2): Shortcut for short limbs.
+
+2019-11-09 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp/mini-gmp.c (gmp_clz, gmp_popcount_limb, mpz_export):
+	Avoid undefined behaviour with small limb sizes.
+
+2019-09-30  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/t-gcd.c (gcdext_valid_p): Stricter checks for gcdext
+	corner cases.
+
+2018-12-21 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp/mini-gmp.c: Support for micro-gmp.
+
+2018-11-07 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp/mini-gmp.c: Silence a couple of warnings.
+
+2018-10-30 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_probab_prime_p): BPSW test for primality.
+
+	* tests/hex-random.c (hex_random_lucm_op): New function.
+	* tests/hex-random.h: Declare it.
+	* tests/mini-random.c (mini_random_lucm_op): New function.
+	* tests/mini-random.h: Declare it.
+	* mini-gmp/tests/t-lucm.c: New test
+	* mini-gmp/tests/Makefile (CHECK_PROGRAMS): Add t-lucm.
+
+2018-09-07  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/t-div.c (testmain): Add missing const declarations.
+
+2018-05-20 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_get_d): Convert a fixed number of
+	bits (GMP_DBL_MANT_BITS) to avoid rounding.
+
+	* mini-mpq.c (mpq_mul): Use mpq_nan_init.
+
+	* tests/t-double.c (test_matissa): Tests converted bits.
+
+2018-04-26 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-mpq.c: New file, mini-implementation of mpq_t.
+	* mini-mpq.h: New file, definitions for mpq_t.
+	* tests/t-mpq_addsub: New tests for mpq_add and sub.
+	* tests/t-mpq_muldiv: New tests for mpq_mul and div.
+	* tests/t-mpq_muldiv_2exp: New tests for mpq_*_2exp.
+
+2018-03-11  Niels Möller  <nisse at lysator.liu.se>
+
+	* mini-gmp.c (mpn_div_qr_2_preinv): Drop separate rp argument.
+	Clobber input np, and store remainder in np[0] and np[1]. This is
+	all the current caller needs, and it eliminates one allocation in
+	the common case of un-normalized d.
+	(mpn_div_qr_2): Delete #if:ed out function.
+	(mpn_div_qr_preinv): Update the only call site for
+	mpn_div_qr_2_preinv.
+
+2018-02-10  Niels Möller  <nisse at lysator.liu.se>
+
+	* mini-gmp.c (mpn_div_qr_1_preinv): When qp is non-NULL, reuse
+	area for shifted input, to avoid an allocation.
+
+2018-01-15 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (gmp_popcount_limb): Micro-optimisations.
+	* tests/t-comb.c (checkWilson): Check also mpz_2fac_ui.
+
+2017-12-30 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_mfac_ui, mpz_2fac_ui): New functions.
+	* mini-gmp.h: Declare them.
+	* mini-gmp.c (mpz_fac_ui): Use mpz_mfac_ui.
+
+2017-07-23  Niels Möller  <nisse at lysator.liu.se>
+
+	* mini-gmp.c (GMP_MPN_OVERLAP_P): New macro, copy of
+	MPN_OVERLAP_P, from gmp-impl.h.
+	(mpn_mul): Assert that output area doesn't overlap with the input.
+
+2017-02-03 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_sizeinbase, mpz_get_str, mpz_set_str): Support
+	bases up to 62.
+	* tests/t-str.c: Update tests accordingly.
+
+2016-11-27 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_get_si): fewer branches, safer forumla for negatives.
+
+	* tests/t-signed.c: Removed a typo
+
+2016-11-24  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/hex-random.c (mkseed): Produce a 48-bit mpz_t value,
+	regardless of word size.
+	(hex_random_init): Use gmp_randseed instead of gmp_randseed_ui,
+	and support seeds exceeding an unsigned long.
+
+	* tests/hex-random.c (mkseed): New function, using /dev/urandom
+	for random seed when available.
+	(hex_random_init): Use it.
+
+2016-11-23  Niels Möller  <nisse at lysator.liu.se>
+
+	* mini-gmp.c (GMP_CMP): New macro.
+	(mpz_sgn, mpz_cmp_si, mpz_cmp_ui, mpz_cmpabs_ui): Use it.
+
+2016-11-22  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/t-invert.c (test_3by2, test_2by1): New functions,
+	extracted from testmain.
+	(testmain): Add test with inputs which triggered the
+	mpn_invert_3by2 bug (see 2016-11-16 entry).
+
+2016-11-21 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/t-signed.c: compare different signs, and after overflow.
+
+2016-11-20  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/t-signed.c: Reorganize testcase, to avoid undefined
+	behaviour with signed overflow.
+
+2016-11-19  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/run-tests: Set up LD_LIBRARY_PATH and DYLD_LIBRARY_PATH
+	for tests only, based on TEST_LIBRARY_PATH.
+
+	* tests/mini-random.h: Use name "../mini-gmp.h" for include, so we
+	don't need any -I options to the compiler.
+
+	* tests/Makefile: Pass CFLAGS to the linker, as
+	recommended by the GNU coding standard.
+	(CPPFLAGS): New variable, with empty default value.
+	(CFLAGS): Remove the -I flag involving MINI_GMP_DIR, to leave free
+	for overriding on make command line.
+	(EXTRA_CFLAGS): Deleted variable, no longer needed.
+
+2016-11-18  Torbjörn Granlund  <tg at gmplib.org>
+
+	* tests/Makefile: Pass EXTRA_CFLAGS to linker as a intermediate fix.
+
+2016-11-17 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/t-str.c: free a pointer to avoid memory leaks.
+
+2016-11-16  Niels Möller  <nisse at lysator.liu.se>
+
+	* mini-gmp.c (mpn_invert_3by2): Fix arithmetic overflow
+	bug, and improve documentation of the algorithm.
+
+2016-11-15  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/t-limbs.c (testmain): Skip tests with zero product.
+
+	* tests/hex-random.c (hex_random_init): Added fflush call.
+
+2016-11-15  Torbjörn Granlund  <tg at gmplib.org>
+
+	* tests/Makefile (TESTS): New variable, allowing separation of
+	compilation and running of tests.
+	* tests/run-tests: Allow empty tests list.
+
+2016-11-14 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/t-str.c: Some more test cases.
+	* tests/t-pprime_p.c: Use shorter operands, with different sizes.
+
+2016-11-01  Torbjörn Granlund  <tg at gmplib.org>
+
+	* tests/hex-random.c: Reinstate gmp.h inclusion.
+
+2016-08-22  Niels Möller  <nisse at lysator.liu.se>
+
+	* mini-gmp.c (mpn_set_str_other): Always return size >= 1, with
+	unnormalized result in the case the input digits are all zero.
+	Fixes crash on a large number of leading zeros, reported by Axel
+	Miller.
+	(mpz_set_str): Normalize as needed, after above change. Return
+	failure for inputs string with no digits, i.e., empty except for
+	optional sign, base prefix and white space.
+
+2016-01-01 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c: Silence warnings due to (un)signed types.
+	* tests/testutils.c: Likewise.
+	* tests/t-logops.c: Likewise.
+	* tests/t-cmp_d.c: Likewise.
+	* tests/t-reuse.c: Likewise.
+	* tests/t-cong.c: Likewise.
+
+2015-11-13 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c: Lazy allocation for mpz_t.
+	(mpz_rootrem): Exploit lazy allocation to avoid init2.
+
+2015-11-06 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpn_com, mpn_neg): New functions.
+	* mini-gmp.h: Declare them.
+	* mini-gmp.c (mpz_div_r_2exp): Use mpn_neg.
+
+2015-10-29 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c: Removed a typo (spotted by Paul Zimmermann).
+
+2015-05-30 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.h: Declare mpn_zero_p.
+	* mini-gmp.c: Define mpn_zero_p as a function, not a macro.
+
+2014-08-27  Niels Möller  <nisse at lysator.liu.se>
+
+	* mini-gmp.c (mpz_abs_sub_bit): Do full normalization,
+	needed if mpz_clrbit clears the most significant one bit.
+
+2014-07-28 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c: Remove some useless variables.
+
+2014-05-20 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c: +1 in the init2 argument before setbit.
+
+2014-05-15 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c: Micro-optimisations.
+
+2014-03-12 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_probab_prime_p): Micro-optimisation.
+
+2014-03-06  Niels Möller  <nisse at lysator.liu.se>
+
+	* mini-gmp.c (gmp_millerrabin): New internal function.
+	(mpz_probab_prime_p): New function.
+	* mini-gmp.h (mpz_probab_prime_p): Declare it.
+	* tests/t-pprime_p.c: New test program.
+	* tests/Makefile (CHECK_PROGRAMS): Added t-pprime_p.
+
+2014-03-03  Niels Möller  <nisse at lysator.liu.se>
+
+	* mini-gmp.c (mpz_congruent_p): New function.
+	* mini-gmp.h: Declare it.
+	* tests/t-cong.c: New file, based on tests/mpz/t-cong.c.
+	* tests/Makefile (CHECK_PROGRAMS): Added t-cong.
+
+	* tests/testutils.c (dump): New function. Deleted static
+	functions in other files.
+	(mpz_set_str_or_abort): Moved function here, from...
+	* tests/t-cmp_d.c: ... old location.
+
+	* tests/t-reuse.c (dump3): Renamed, from ...
+	(dump): ...old name.
+
+2014-02-21 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpn_sqrtrem): New function.
+	* mini-gmp.h: Declare it.
+	* tests/t-sqrt.c: Test it.
+
+2014-02-15 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_div_qr): init + set = init_set .
+
+2014-02-10 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/t-limbs.c: New test for mpz_limbs_*.
+	* tests/Makefile (CHECK_PROGRAMS): Add it.
+
+2014-02-08 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_realloc2, mpz_limbs_read, mpz_limbs_modify
+	mpz_limbs_write, mpz_limbs_finish, mpz_roinit_n): New functions.
+	(mpn_perfect_square_p): New function.
+	* mini-gmp.h: Declare them.
+
+	* tests/t-mul.c: Use roinit and limbs_read to test mpn.
+	* tests/t-sqrt.c: Test also mpn_perfect_square_p.
+
+2014-02-03 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpn_rootrem): Allow NULL argument.
+
+	* mini-gmp.c (mpn_zero): New function.
+	(mpz_perfect_square_p): New function.
+	* mini-gmp.h: Declare them.
+
+	* tests/t-sqrt.c: Test mpz_perfect_square_p.
+	* tests/t-root.c: Test also 1-th root, allow perfect powers.
+
+2014-01-23 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/t-aorsmul.c: New file, test for mpz_{add,sub}mul{,_ui}
+	* tests/Makefile: Add t-aorsmul.
+
+2014-01-19 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpn_popcount): New function.
+	(mpz_popcount): Use it.
+	(mpz_addmul_ui, mpz_addmul, mpz_submul_ui, mpz_submul): Added.
+	* mini-gmp.h: Declare them.
+
+2014-01-16  Niels Möller  <nisse at lysator.liu.se>
+
+	* mini-gmp.c (mp_bits_per_limb): New const value.
+	* mini-gmp.h: Declare it.
+
+2013-03-13 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c: Write loops in a cleaner way.
+
+2013-02-27 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_div_q_2exp): Adjust only if needed.
+	(mpn_common_scan): New service function to unify scan loops.
+	(mpz_scan0, mpz_scan1): Simplify by using mpn_common_scan.
+	(mpz_make_odd): Simplify, assume in-place operation on positive.
+	(mpn_scan0, mpn_scan1): New functions.
+	* mini-gmp.h (mpn_scan0, mpn_scan1): New declarations.
+	* tests/t-scan.c: Test also mpn_scan0 and mpn_scan1.
+
+2013-02-25  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/t-double.c (testmain): Declare double variables as
+	volatile, to drop extended precision.
+
+	* tests/testutils.c (testfree): New function. Use it everywhere
+	where test programs deallocate storage allocated via the mini-gmp
+	allocation functions, including uses of mpz_get_str for various
+	test failure messages.
+
+2013-02-19 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c: Move asserts to work-around a compiler bug.
+	(mpz_export): Reorder branches.
+	(mpz_mul_ui): Avoid temporary allocation (mpn_mul_1 can work in-place).
+
+	* tests/t-reuse.c: Fix typo causing the same negation condition to
+	be applied to all operands. (See 2013-02-03, Torbjorn)
+
+2013-02-17 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_mul): Read sizes just once.
+	(mpn_set_str_other): Remove a redundant variable.
+	(mpz_abs_add): Use SWAP once, to order sizes.
+	(mpz_mul_ui): Micro-optimisation.
+	(mpz_rootrem): Use _init2 before _setbit.
+	(mpz_set_str): Optimise-out a variable.
+	(mpz_import): Normalise only if needed.
+	(mpn_div_qr_1): Speed-up the d=1 case, delaying a branch.
+
+2013-02-12 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (fac_ui, bin_uiui): Use shorter and faster code.
+
+	* mini-gmp.c: Reduce branches.
+
+2013-01-23 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_cmpabs_d, mpz_cmp_d): Simplify.
+	(mpz_set_str): Behaviour more adherent to the real GMP.
+
+	* tests/t-str.c: Cast size_t to unsigned long, for printf.
+	* tests/t-import.c: Likewise.
+	* tests/t-comb.c: Remove an unused var.
+	* tests/t-div.c: Remove unused args passed to fprintf.
+	* tests/t-double.c: Use float immediates with float vars.
+
+2013-01-22  Niels Möller  <nisse at lysator.liu.se>
+
+	* mini-gmp.c (mpz_cmp_d): Simplified, just sort out signs, then
+	call mpz_cmpabs_d.
+
+	* tests/testutils.h: Include stdio.h and stdlib.h.
+	(numberof): New define.
+
+	* tests/t-cmp_d.c: New file, copied from tests/mpz/t-cmp_d.c with
+	minor changes.
+	* tests/Makefile (CHECK_PROGRAMS): Added t-cmp_d,
+
+	* mini-gmp.c (mpz_cmpabs_d): New function.
+	* mini-gmp.h: Declare it.
+
+2013-01-21  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/t-str.c (testmain): Test mpz_out_str, using
+	the tmpfile function for i/o.
+
+2013-01-20 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/testutils.c (testhalves): New function, test default
+	memory functions.
+	* tests/testutils.h (testhalves): Declare it
+	* tests/t-logops.c: Use testhalves.
+
+	* mini-gmp.c (mpz_init_set_str): New function.
+	* mini-gmp.h (mpz_init_set_str): Declare it.
+	* tests/t-str.c: Test mpz_init_set_str.
+
+2013-01-19 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/t-double.c (testmain): Get the current free
+	function using mp_get_memory_functions.
+	* tests/t-str.c (testmain): Likewise.
+
+	* tests/testutils.h (tu_free): Remove declaration.
+
+	* tests/testutils.c (block_check, tu_free): Mark static.
+
+2013-01-18  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/t-str.c (test_small): New function, exercising
+	parsing of whitespace and base prefixes.
+	(testmain): Call it.
+
+	* tests/t-gcd.c (gcdext_valid_p): Fixed memory leak.
+
+	* tests/t-double.c (testmain): Call tu_free rather than
+	free, for storage allocated by mpz_get_str.
+	* tests/t-str.c (testmain): Likewise.
+
+	* tests/testutils.c (block_init, block_check): New functions.
+	(tu_alloc, tu_realloc, tu_free): New functions.
+	(main): Use mp_set_memory_functions.
+	* tests/testutils.h (tu_free): Declare.
+
+	* tests/testutils.h: New file, declarations for test programs.
+
+	* tests/testutils.c (main): New file, with shared main
+	function for all the test programs. Also includes mini-gmp.c.
+	Calls testmain after initialization. All other test programs
+	updated to define testmain rather than main.
+
+2013-01-18 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/t-signed.c: Slightly larger coverage.
+	* tests/t-double.c: Test also mpz_init_set_d.
+
+2013-01-18  Torbjorn Granlund  <tege at gmplib.org>
+
+	* tests/t-div.c: Test mpz_divisible_p and mpz_divisible_ui_p.
+
+	* tests/t-div.c: Test also mpz_mod, mpz_mod_ui.  Compare
+	mpz_divisible_p just to ceil, to save time.
+
+	* mini-gmp.c: Prefix some names with GMP_.
+
+2013-01-16 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/t-double.c: Test mpz_cmp_d.
+	* mini-gmp.c (mpz_cmp_d): Correct multiword comparison.
+
+	* mini-gmp.c (mpz_set_str): Handle the empty string.
+	* tests/t-str.c: Test base <= 0.
+
+2013-01-15  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/t-str.c (main): Use x->_mp_d rather than x[0]._mp_d.
+	* tests/t-invert.c (main): Likewise.
+
+	* tests/t-mul.c (main): Test mpn_mul_n and mpn_sqr.
+
+	* tests/hex-random.h (enum hex_random_op): New value OP_SQR.
+
+	* tests/mini-random.c (mini_random_op3): Renamed, from...
+	(mini_random_op): ... old name. Updated callers.
+	(mini_random_op2): New function.
+
+	* tests/hex-random.c (hex_random_op3): Renamed, from...
+	(hex_random_op): ... old name. Updated callers.
+	(hex_random_op2): New function.
+
+2013-01-15 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/t-logops.c: Improve popcount/hamdist testing.
+	* tests/t-signed.c: Test more cases.
+
+2013-01-14  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/t-str.c (main): Added tests for mpn_get_str and
+	mpn_set_str.
+
+2013-01-11 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/t-comb.c: New test program, testing both
+	mpz_fac_ui and mpz_bin_uiui.
+	* tests/Makefile (CHECK_PROGRAMS): Added t-comb.
+
+	* mini-gmp.c (mpz_mul_si): Simplify.
+	(mpz_mul_ui, mpz_mul, mpz_div_qr): Replace init+REALLOC with init2.
+
+	* mini-gmp.c (NEG_CAST): New macro.
+	(mpz_mul_si, mpz_set_si, mpz_cmp_si): Use NEG_CAST.
+
+	* mini-gmp.c (mpz_set_si, mpz_cmp_si): Simplify by using
+	the _ui variant.
+
+	* tests/t-root.c: Use mpz_ui_pow_ui, when base fits an ui.
+
+	* tests/t-mul.c: Test also mpz_mul_si.
+	* tests/t-sub.c: Test also mpz_ui_sub.
+
+	* mini-gmp.c (mpz_fits_slong_p): Correct range.
+	* tests/t-signed.c: New test program, for get/set/cmp_si.
+	* tests/Makefile (CHECK_PROGRAMS): Added t-signed.
+
+	* mini-gmp.c (mpz_hamdist): Handle different sizes.
+	* tests/t-logops.c: Test also popcount and hamdist.
+
+2013-01-10 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_export, mpz_import): Less restrictive ASSERTs.
+	* tests/t-import.c: Test also size=0 or count=0.
+
+2013-01-10  Torbjorn Granlund  <tege at gmplib.org>
+
+	* tests/t-import.c (main): Don't drop off function end.
+
+2013-01-09 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_export): Support op=0 countp=NULL.
+
+2013-01-08  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/t-import.c: New test program, testing both
+	mpz_import and mpz_export.
+	* tests/Makefile (CHECK_PROGRAMS): Added t-import.
+
+	* tests/mini-random.c (mini_rrandomb_export): New function.
+	* tests/mini-random.h: Declare it.
+	* tests/hex-random.c (hex_rrandomb_export): New function.
+	* tests/hex-random.h: Declare it.
+
+	* mini-gmp.c (mpz_export): Compute accurate word count up
+	front, to avoid generating any high zero words.
+
+2013-01-07 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* README: Document base limitation for conversions.
+	* mini-gmp.c (mpz_set_str): Remove goto.
+	(mpz_import, mpz_export): Correctly use order/endianness.
+
+2013-01-04 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	From shuax:
+	* mini-gmp.c (mpz_import): Reset limb after storing it.
+
+2012-11-22  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/run-tests: Copied latest version from GNU Nettle.
+	Minor fix to the use of $EMULATOR, and proper copyright notice.
+
+2012-06-24 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_div_r_2exp, mpz_div_q_2exp): Improve
+	adjustment condition.
+
+2012-06-08 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_realloc): remove a branch.
+
+2012-05-25 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* tests/t-div.c: Test all _qr, _q, _r variants.
+	* tests/t-lcm.c: Test the _ui variant.
+
+	* mini-gmp.c (mpz_mod, mpz_mod_ui): New functions.
+	* mini-gmp.h (mpz_mod, mpz_mod_ui): Prototypes.
+
+2012-05-09 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c: merge mpz_rootrem and mpz_sqrtrem.
+
+2012-04-13 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.h (mpz_fac_ui, mpz_bin_uiui): New definitions.
+	* mini-gmp.c (mpz_fac_ui, mpz_bin_uiui): Trivial implementation.
+
+2012-04-11 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.h (mpz_root, mpz_rootrem): define (correctly).
+	* mini-gmp.c (mpz_rootrem): Extended code from _root.
+	(mpz_root): Use mpz_rootrem.
+	(mpz_mul_ui): Correctly handle negative operands.
+
+	* tests/Makefile (CHECK_PROGRAMS): add t-root.
+	* tests/t-root.c: New file.
+	* tests/t-reuse.c: Enable root{,rem} tests.
+
+2012-04-10 Marco Bodrato <bodrato at mail.dm.unipi.it>
+
+	* mini-gmp.c (mpz_root): New, support negative operands.
+	* mini-gmp.h (mpz_root): define.
+	(mpz_out_str): Test also __STDIO_LOADED (for VMS).
+	* mpz/2fac_ui.c: Cosmetic change.
+
+	* tests/t-reuse.c: New test case, based on tests/mpz/reuse.c.
+
+	* mini-gmp.c (mpz_cdiv_r_ui): New function.
+	(mpz_fdiv_r_ui): New function.
+	(mpz_tdiv_r_ui): New function.
+	(mpz_powm_ui): New function.
+	(mpz_pow_ui): New function.
+	(mpz_ui_pow_ui): Use mpz_pow_ui.
+	(mpz_gcdext): Fixed input/output overlap, for the case of one
+	input being zero.
+	(mpz_sqrtrem): Fix for the case r NULL, U zero.
+
+2012-02-28  Niels Möller  <nisse at lysator.liu.se>
+
+	* tests/Makefile (srcdir, MINI_GMP_DIR): New make variables. These
+	can be overridden when using a separate build directory.
+	(EXTRA_CFLAGS): Renamed, was OPTFLAGS.
+
+	* mini-gmp.c (mpz_abs_add): Don't cache limb pointers
+	over MPZ_REALLOC, since that breaks in-place operation. Bug
+	spotted by Torbjörn.
+	(mpz_and, mpz_ior, mpz_xor): Likewise.
+	(mpz_cmp): Fixed comparison of negative numbers.
+
+2012-02-26  Niels Möller  <nisse at lysator.liu.se>
+
+	* mini-gmp: New subdirectory. For use by GMP bootstrap, and as a
+	fallback for applications needing bignums but not high
+	performance.

Modified: trunk/Build/source/libs/gmp/gmp-src/mini-gmp/mini-gmp.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mini-gmp/mini-gmp.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mini-gmp/mini-gmp.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -32,7 +32,7 @@
 
 /* NOTE: All functions in this file which are not declared in
    mini-gmp.h are internal, and are not intended to be compatible
-   neither with GMP nor with future versions of mini-gmp. */
+   with GMP or with future versions of mini-gmp. */
 
 /* Much of the material copied from GMP files, including: gmp-impl.h,
    longlong.h, mpn/generic/add_n.c, mpn/generic/addmul_1.c,
@@ -790,7 +790,7 @@
 
        qh' = floor( (b^3 - 1) / u) - b = floor ((b^3 - b u - 1) / u
 	   = floor( (b (~u) + b-1) / u),
-	   
+
        and the remainder
 
        r = b (~u) + b-1 - qh (b uh + ul)
@@ -3418,7 +3418,7 @@
       gmp_lucas_step_k_2k (V, Qk, n);
 
       /* A step k->k+1 is performed if the bit in $n$ is 1	*/
-      /* mpz_tstbit(n,bs) or the the bit is 0 in $n$ but	*/
+      /* mpz_tstbit(n,bs) or the bit is 0 in $n$ but	*/
       /* should be 1 in $n+1$ (bs == b0)			*/
       if (b0 == bs || mpz_tstbit (n, bs))
 	{
@@ -4381,6 +4381,8 @@
   size_t len;
 
   str = mpz_get_str (NULL, base, x);
+  if (!str)
+    return 0;
   len = strlen (str);
   len = fwrite (str, 1, len, stream);
   gmp_free (str);
@@ -4488,7 +4490,7 @@
       ptrdiff_t word_step;
       /* The current (partial) limb. */
       mp_limb_t limb;
-      /* The number of bytes left to to in this limb. */
+      /* The number of bytes left to do in this limb. */
       size_t bytes;
       /* The index where the limb was read. */
       mp_size_t i;

Modified: trunk/Build/source/libs/gmp/gmp-src/mini-gmp/mini-gmp.h
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mini-gmp/mini-gmp.h	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mini-gmp/mini-gmp.h	2020-11-15 07:20:51 UTC (rev 56937)
@@ -1,6 +1,6 @@
 /* mini-gmp, a minimalistic implementation of a GNU GMP subset.
 
-Copyright 2011-2015, 2017, 2019 Free Software Foundation, Inc.
+Copyright 2011-2015, 2017, 2019-2020 Free Software Foundation, Inc.
 
 This file is part of the GNU MP Library.
 
@@ -291,7 +291,8 @@
   || defined (_MSL_STDIO_H)           /* Metrowerks */          \
   || defined (_STDIO_H_INCLUDED)      /* QNX4 */		\
   || defined (_ISO_STDIO_ISO_H)       /* Sun C++ */		\
-  || defined (__STDIO_LOADED)         /* VMS */
+  || defined (__STDIO_LOADED)         /* VMS */			\
+  || defined (__DEFINED_FILE)         /* musl */
 size_t mpz_out_str (FILE *, int, const mpz_t);
 #endif
 

Modified: trunk/Build/source/libs/gmp/gmp-src/mini-gmp/mini-mpq.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mini-gmp/mini-mpq.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mini-gmp/mini-mpq.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -5,7 +5,7 @@
    Acknowledgment: special thanks to Bradley Lucier for his comments
    to the preliminary version of this code.
 
-Copyright 2018, 2019 Free Software Foundation, Inc.
+Copyright 2018-2020 Free Software Foundation, Inc.
 
 This file is part of the GNU MP Library.
 
@@ -107,10 +107,10 @@
 static void
 mpq_canonical_sign (mpq_t r)
 {
-  int cmp = mpq_denref (r)->_mp_size;
-  if (cmp <= 0)
+  mp_size_t ds = mpq_denref (r)->_mp_size;
+  if (ds <= 0)
     {
-      if (cmp == 0)
+      if (ds == 0)
 	gmp_die("mpq: Fraction with zero denominator.");
       mpz_neg (mpq_denref (r), mpq_denref (r));
       mpz_neg (mpq_numref (r), mpq_numref (r));
@@ -515,6 +515,8 @@
   void (*gmp_free_func) (void *, size_t);
 
   str = mpq_get_str (NULL, base, x);
+  if (!str)
+    return 0;
   len = strlen (str);
   len = fwrite (str, 1, len, stream);
   mp_get_memory_functions (NULL, NULL, &gmp_free_func);

Added: trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/arm64-defs.m4
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/arm64-defs.m4	                        (rev 0)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/arm64-defs.m4	2020-11-15 07:20:51 UTC (rev 56937)
@@ -0,0 +1,53 @@
+divert(-1)
+
+dnl  m4 macros for ARM64 ELF assembler.
+
+dnl  Copyright 2020 Free Software Foundation, Inc.
+
+dnl  This file is part of the GNU MP Library.
+dnl
+dnl  The GNU MP Library is free software; you can redistribute it and/or modify
+dnl  it under the terms of either:
+dnl
+dnl    * the GNU Lesser General Public License as published by the Free
+dnl      Software Foundation; either version 3 of the License, or (at your
+dnl      option) any later version.
+dnl
+dnl  or
+dnl
+dnl    * the GNU General Public License as published by the Free Software
+dnl      Foundation; either version 2 of the License, or (at your option) any
+dnl      later version.
+dnl
+dnl  or both in parallel, as here.
+dnl
+dnl  The GNU MP Library is distributed in the hope that it will be useful, but
+dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+dnl  for more details.
+dnl
+dnl  You should have received copies of the GNU General Public License and the
+dnl  GNU Lesser General Public License along with the GNU MP Library.  If not,
+dnl  see https://www.gnu.org/licenses/.
+
+
+dnl  Standard commenting is with @, the default m4 # is for constants and we
+dnl  don't want to disable macro expansions in or after them.
+
+changecom
+
+
+dnl  LEA_HI(reg,gmp_symbol), LEA_LO(reg,gmp_symbol)
+dnl
+dnl  Load the address of gmp_symbol into a register. We split this into two
+dnl  parts to allow separation for manual insn scheduling.
+
+ifdef(`PIC',`dnl
+define(`LEA_HI', `adrp	$1, :got:$2')dnl
+define(`LEA_LO', `ldr	$1, [$1, #:got_lo12:$2]')dnl
+',`dnl
+define(`LEA_HI', `adrp	$1, $2')dnl
+define(`LEA_LO', `add	$1, $1, :lo12:$2')dnl
+')dnl
+
+divert`'dnl

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/bdiv_q_1.asm
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/bdiv_q_1.asm	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/bdiv_q_1.asm	2020-11-15 07:20:51 UTC (rev 56937)
@@ -61,15 +61,9 @@
 	clz	cnt, x6
 	lsr	d, d, cnt
 
-ifdef(`PIC',`
-	adrp	x7, :got:__gmp_binvert_limb_table
+	LEA_HI(	x7, binvert_limb_table)
 	ubfx	x6, d, 1, 7
-	ldr	x7, [x7, #:got_lo12:__gmp_binvert_limb_table]
-',`
-	adrp	x7, __gmp_binvert_limb_table
-	ubfx	x6, d, 1, 7
-	add	x7, x7, :lo12:__gmp_binvert_limb_table
-')
+	LEA_LO(	x7, binvert_limb_table)
 	ldrb	w6, [x7, x6]
 	ubfiz	x7, x6, 1, 8
 	umull	x6, w6, w6
@@ -81,7 +75,7 @@
 	mul	x6, x6, x6
 	msub	di, x6, d, x7
 
-	b	mpn_pi1_bdiv_q_1
+	b	GSYM_PREFIX`'mpn_pi1_bdiv_q_1
 EPILOGUE()
 
 PROLOGUE(mpn_pi1_bdiv_q_1)

Added: trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/darwin.m4
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/darwin.m4	                        (rev 0)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/darwin.m4	2020-11-15 07:20:51 UTC (rev 56937)
@@ -0,0 +1,50 @@
+divert(-1)
+
+dnl  m4 macros for ARM64 Darwin assembler.
+
+dnl  Copyright 2020 Free Software Foundation, Inc.
+
+dnl  This file is part of the GNU MP Library.
+dnl
+dnl  The GNU MP Library is free software; you can redistribute it and/or modify
+dnl  it under the terms of either:
+dnl
+dnl    * the GNU Lesser General Public License as published by the Free
+dnl      Software Foundation; either version 3 of the License, or (at your
+dnl      option) any later version.
+dnl
+dnl  or
+dnl
+dnl    * the GNU General Public License as published by the Free Software
+dnl      Foundation; either version 2 of the License, or (at your option) any
+dnl      later version.
+dnl
+dnl  or both in parallel, as here.
+dnl
+dnl  The GNU MP Library is distributed in the hope that it will be useful, but
+dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+dnl  for more details.
+dnl
+dnl  You should have received copies of the GNU General Public License and the
+dnl  GNU Lesser General Public License along with the GNU MP Library.  If not,
+dnl  see https://www.gnu.org/licenses/.
+
+
+dnl  Standard commenting is with @, the default m4 # is for constants and we
+dnl  don't want to disable macro expansions in or after them.
+
+changecom
+
+
+dnl  LEA_HI(reg,gmp_symbol), LEA_LO(reg,gmp_symbol)
+dnl
+dnl  Load the address of gmp_symbol into a register. We split this into two
+dnl  parts to allow separation for manual insn scheduling.  TODO: Darwin allows
+dnl  for relaxing these two insns into an adr and a nop, but that requires the
+dnl  .loh pseudo for connecting them.
+
+define(`LEA_HI',`adrp	$1, $2 at GOTPAGE')dnl
+define(`LEA_LO',`ldr	$1, [$1, $2 at GOTPAGEOFF]')dnl
+
+divert`'dnl

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/invert_limb.asm
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/invert_limb.asm	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/invert_limb.asm	2020-11-15 07:20:51 UTC (rev 56937)
@@ -41,9 +41,9 @@
 ASM_START()
 PROLOGUE(mpn_invert_limb)
 	lsr	x2, x0, #54
-	adrp	x1, approx_tab
+	LEA_HI(	x1, approx_tab)
 	and	x2, x2, #0x1fe
-	add	x1, x1, :lo12:approx_tab
+	LEA_LO(	x1, approx_tab)
 	ldrh	w3, [x1,x2]
 	lsr	x4, x0, #24
 	add	x4, x4, #1

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/lshift.asm
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/lshift.asm	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/lshift.asm	2020-11-15 07:20:51 UTC (rev 56937)
@@ -3,20 +3,31 @@
 dnl  Copyright 2013, 2014, 2017 Free Software Foundation, Inc.
 
 dnl  This file is part of the GNU MP Library.
-
+dnl
 dnl  The GNU MP Library is free software; you can redistribute it and/or modify
-dnl  it under the terms of the GNU Lesser General Public License as published
-dnl  by the Free Software Foundation; either version 3 of the License, or (at
-dnl  your option) any later version.
-
+dnl  it under the terms of either:
+dnl
+dnl    * the GNU Lesser General Public License as published by the Free
+dnl      Software Foundation; either version 3 of the License, or (at your
+dnl      option) any later version.
+dnl
+dnl  or
+dnl
+dnl    * the GNU General Public License as published by the Free Software
+dnl      Foundation; either version 2 of the License, or (at your option) any
+dnl      later version.
+dnl
+dnl  or both in parallel, as here.
+dnl
 dnl  The GNU MP Library is distributed in the hope that it will be useful, but
 dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-dnl  License for more details.
+dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+dnl  for more details.
+dnl
+dnl  You should have received copies of the GNU General Public License and the
+dnl  GNU Lesser General Public License along with the GNU MP Library.  If not,
+dnl  see https://www.gnu.org/licenses/.
 
-dnl  You should have received a copy of the GNU Lesser General Public License
-dnl  along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.
-
 include(`../config.m4')
 
 C	     cycles/limb   assumed optimal c/l

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/lshiftc.asm
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/lshiftc.asm	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/lshiftc.asm	2020-11-15 07:20:51 UTC (rev 56937)
@@ -3,20 +3,31 @@
 dnl  Copyright 2013, 2014, 2017 Free Software Foundation, Inc.
 
 dnl  This file is part of the GNU MP Library.
-
+dnl
 dnl  The GNU MP Library is free software; you can redistribute it and/or modify
-dnl  it under the terms of the GNU Lesser General Public License as published
-dnl  by the Free Software Foundation; either version 3 of the License, or (at
-dnl  your option) any later version.
-
+dnl  it under the terms of either:
+dnl
+dnl    * the GNU Lesser General Public License as published by the Free
+dnl      Software Foundation; either version 3 of the License, or (at your
+dnl      option) any later version.
+dnl
+dnl  or
+dnl
+dnl    * the GNU General Public License as published by the Free Software
+dnl      Foundation; either version 2 of the License, or (at your option) any
+dnl      later version.
+dnl
+dnl  or both in parallel, as here.
+dnl
 dnl  The GNU MP Library is distributed in the hope that it will be useful, but
 dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-dnl  License for more details.
+dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+dnl  for more details.
+dnl
+dnl  You should have received copies of the GNU General Public License and the
+dnl  GNU Lesser General Public License along with the GNU MP Library.  If not,
+dnl  see https://www.gnu.org/licenses/.
 
-dnl  You should have received a copy of the GNU Lesser General Public License
-dnl  along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.
-
 include(`../config.m4')
 
 C	     cycles/limb   assumed optimal c/l

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/rshift.asm
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/rshift.asm	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/arm64/rshift.asm	2020-11-15 07:20:51 UTC (rev 56937)
@@ -3,20 +3,31 @@
 dnl  Copyright 2013, 2014, 2017 Free Software Foundation, Inc.
 
 dnl  This file is part of the GNU MP Library.
-
+dnl
 dnl  The GNU MP Library is free software; you can redistribute it and/or modify
-dnl  it under the terms of the GNU Lesser General Public License as published
-dnl  by the Free Software Foundation; either version 3 of the License, or (at
-dnl  your option) any later version.
-
+dnl  it under the terms of either:
+dnl
+dnl    * the GNU Lesser General Public License as published by the Free
+dnl      Software Foundation; either version 3 of the License, or (at your
+dnl      option) any later version.
+dnl
+dnl  or
+dnl
+dnl    * the GNU General Public License as published by the Free Software
+dnl      Foundation; either version 2 of the License, or (at your option) any
+dnl      later version.
+dnl
+dnl  or both in parallel, as here.
+dnl
 dnl  The GNU MP Library is distributed in the hope that it will be useful, but
 dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-dnl  License for more details.
+dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+dnl  for more details.
+dnl
+dnl  You should have received copies of the GNU General Public License and the
+dnl  GNU Lesser General Public License along with the GNU MP Library.  If not,
+dnl  see https://www.gnu.org/licenses/.
 
-dnl  You should have received a copy of the GNU Lesser General Public License
-dnl  along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.
-
 include(`../config.m4')
 
 C	     cycles/limb   assumed optimal c/l

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/generic/compute_powtab.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/generic/compute_powtab.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/generic/compute_powtab.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -70,6 +70,8 @@
   mp_limb_t cy;
   long start_idx;
   int c;
+  mp_size_t shift;
+  long pi;
 
   mp_limb_t big_base = mp_bases[base].big_base;
   int chars_per_limb = mp_bases[base].chars_per_limb;
@@ -97,7 +99,7 @@
   c = t[0] == 0;
   t += c;
   n -= c;
-  mp_size_t shift = c;
+  shift = c;
 
   SET_powers_t (pt[0], t, n, digits_in_base, base, shift);
   p = t;
@@ -139,7 +141,7 @@
       start_idx = n_pows - 3;
     }
 
-  for (long pi = start_idx; pi >= 0; pi--)
+  for (pi = start_idx; pi >= 0; pi--)
     {
       t = powtab_mem_ptr;
       powtab_mem_ptr += 2 * n + 2;
@@ -214,6 +216,10 @@
 
   powers_t *pt = powtab;
 
+  mp_size_t n = 1;
+  mp_size_t shift = 0;
+  long pi;
+
   p = powtab_mem_ptr;
   powtab_mem_ptr += 1;
   p[0] = big_base;
@@ -221,9 +227,7 @@
   SET_powers_t (pt[0], p, 1, digits_in_base, base, 0);
   pt++;
 
-  mp_size_t n = 1;
-  mp_size_t shift = 0;
-  for (long pi = n_pows - 1; pi >= 0; pi--)
+  for (pi = n_pows - 1; pi >= 0; pi--)
     {
       t = powtab_mem_ptr;
       powtab_mem_ptr += 2 * n;
@@ -271,7 +275,7 @@
 
   /* Strip any remaining low zero limbs.  */
   pt -= n_pows + 1;
-  for (long pi = n_pows; pi >= 0; pi--)
+  for (pi = n_pows; pi >= 0; pi--)
     {
       mp_ptr t = pt[pi].p;
       mp_size_t shift = pt[pi].shift;
@@ -293,7 +297,8 @@
 {
   int chars_per_limb = mp_bases[base].chars_per_limb;
   long n_pows = 0;
-  for (size_t pn = (un + 1) >> 1; pn != 1; pn = (pn + 1) >> 1)
+  size_t pn;
+  for (pn = (un + 1) >> 1; pn != 1; pn = (pn + 1) >> 1)
     {
       exptab[n_pows] = pn * chars_per_limb;
       n_pows++;
@@ -301,11 +306,13 @@
   exptab[n_pows] = chars_per_limb;
 
 #if HAVE_mpn_compute_powtab_mul && HAVE_mpn_compute_powtab_div
+  {
   size_t pn = un - 1;
   size_t xn = (un + 1) >> 1;
   unsigned mcost = 1;
   unsigned dcost = 1;
-  for (long i = n_pows - 2; i >= 0; i--)
+  long i;
+  for (i = n_pows - 2; i >= 0; i--)
     {
       size_t pow = (pn >> (i + 1)) + 1;
 
@@ -332,6 +339,7 @@
     return n_pows;
   else
     return -n_pows;
+  }
 #elif HAVE_mpn_compute_powtab_mul
   return n_pows;
 #elif HAVE_mpn_compute_powtab_div

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/generic/dcpi1_bdiv_q.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/generic/dcpi1_bdiv_q.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/generic/dcpi1_bdiv_q.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -37,7 +37,7 @@
 
 #include "gmp-impl.h"
 
-
+#if 0				/* unused, so leave out for now */
 static mp_size_t
 mpn_dcpi1_bdiv_q_n_itch (mp_size_t n)
 {
@@ -44,6 +44,7 @@
   /* NOTE: Depends on mullo_n and mpn_dcpi1_bdiv_qr_n interface */
   return n;
 }
+#endif
 
 /* Computes Q = - N / D mod B^n, destroys N.
 

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/generic/gcd_22.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/generic/gcd_22.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/generic/gcd_22.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -56,6 +56,7 @@
 
       if (UNLIKELY (t0 == 0))
 	{
+	  int c;
 	  if (t1 == 0)
 	    {
 	      g.d1 = (u1 << 1) | (u0 >> (GMP_LIMB_BITS - 1));
@@ -62,7 +63,6 @@
 	      g.d0 = (u0 << 1) | 1;
 	      return g;
 	    }
-	  int c;
 	  count_trailing_zeros (c, t1);
 
 	  /* v1 = min (u1, v1) */

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/generic/get_d.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/generic/get_d.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/generic/get_d.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -226,7 +226,7 @@
 	      x <<= GMP_NAIL_BITS;
 	      mhi |= x >> nbits >> 11;
 
-	      mlo = x << GMP_LIMB_BITS - nbits - 11;
+	      mlo = x << (GMP_LIMB_BITS - nbits - 11);
 	      nbits = nbits + 11 - GMP_NAIL_BITS;
 	    }
 	  else

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/generic/get_str.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/generic/get_str.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/generic/get_str.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -369,6 +369,8 @@
   int pi;
   size_t out_len;
   mp_ptr tmp;
+  size_t ndig;
+  mp_size_t xn;
   TMP_DECL;
 
   /* Special case zero, as the code below doesn't handle it.  */
@@ -435,8 +437,6 @@
   powtab_mem = TMP_BALLOC_LIMBS (mpn_str_powtab_alloc (un));
 
   /* Compute a table of powers, were the largest power is >= sqrt(U).  */
-  size_t ndig;
-  mp_size_t xn;
   DIGITS_IN_BASE_PER_LIMB (ndig, un, base);
   xn = 1 + ndig / mp_bases[base].chars_per_limb; /* FIXME: scalar integer division */
 

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/generic/hgcd2.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/generic/hgcd2.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/generic/hgcd2.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -256,7 +256,15 @@
 #error No table for provided NBITS
 #endif
 
-static const unsigned char *tabp = tab - (1 << (NBITS - 1) << NBITS);
+/* Doing tabp with a #define makes compiler warnings about pointing outside an
+   object go away.  We used to define this as a variable.  It is not clear if
+   e.g.  (vector[100] - 10) + 10 is well- defined as per the C standard;
+   (vector[100] + 10) - 10 surely is and there is no sequence point so the
+   expressions should be equivalent.  To make this safe, we might want to
+   define tabp as a macro with the index as an argument.  Depending on the
+   platform, relocs might allow for assembly-time or linker-time resolution to
+   take place. */
+#define tabp (tab - (1 << (NBITS - 1) << NBITS))
 
 static inline mp_double_limb_t
 div1 (mp_limb_t n0, mp_limb_t d0)
@@ -314,7 +322,6 @@
 static const unsigned char tab[16] = {
  63, 59, 55, 52, 50, 47, 45, 43, 41, 39, 38, 36, 35, 34, 33, 32
 };
-static const unsigned char *tabp = tab - (1 << (NBITS - 1));
 #elif NBITS == 6
 /* This needs full division about 0.93% of the time. */
 static const unsigned char tab[32] = {
@@ -321,7 +328,6 @@
 127,123,119,116,112,109,106,104,101, 98, 96, 94, 92, 90, 88, 86,
  84, 82, 80, 79, 77, 76, 74, 73, 72, 70, 69, 68, 67, 66, 65, 64
 };
-static const unsigned char *tabp = tab - (1 << (NBITS - 1));
 #elif NBITS == 7
 /* This needs full division about 0.49% of the time. */
 static const unsigned char tab[64] = {
@@ -330,7 +336,6 @@
 169,167,166,164,162,161,159,158,156,155,153,152,150,149,147,146,
 145,143,142,141,140,139,137,136,135,134,133,132,131,130,129,128
 };
-static const unsigned char *tabp = tab - (1 << (NBITS - 1));
 #elif NBITS == 8
 /* This needs full division about 0.26% of the time. */
 static const unsigned short tab[128] = {
@@ -343,11 +348,20 @@
 291,290,288,287,286,285,283,282,281,280,279,277,276,275,274,273,
 272,270,269,268,267,266,265,264,263,262,261,260,259,258,257,256
 };
-static const unsigned short *tabp = tab - (1 << (NBITS - 1));
 #else
 #error No table for provided NBITS
 #endif
 
+/* Doing tabp with a #define makes compiler warnings about pointing outside an
+   object go away.  We used to define this as a variable.  It is not clear if
+   e.g.  (vector[100] - 10) + 10 is well- defined as per the C standard;
+   (vector[100] + 10) - 10 surely is and there is no sequence point so the
+   expressions should be equivalent.  To make this safe, we might want to
+   define tabp as a macro with the index as an argument.  Depending on the
+   platform, relocs might allow for assembly-time or linker-time resolution to
+   take place. */
+#define tabp (tab - (1 << (NBITS - 1)))
+
 static inline mp_double_limb_t
 div1 (mp_limb_t n0, mp_limb_t d0)
 {

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/generic/mod_1_1.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/generic/mod_1_1.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/generic/mod_1_1.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -256,7 +256,7 @@
       cps[2] = B1modb >> cnt;
     }
   B2modb = - b * bi;
-  ASSERT (B2modb <= b);    // NB: equality iff b = B/2
+  ASSERT (B2modb <= b);    /* NB: equality iff b = B/2 */
   cps[3] = B2modb;
 }
 

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/generic/mul_fft.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/generic/mul_fft.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/generic/mul_fft.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -6,7 +6,7 @@
    SAFE TO REACH THEM THROUGH DOCUMENTED INTERFACES.  IN FACT, IT IS ALMOST
    GUARANTEED THAT THEY WILL CHANGE OR DISAPPEAR IN A FUTURE GNU MP RELEASE.
 
-Copyright 1998-2010, 2012, 2013, 2018 Free Software Foundation, Inc.
+Copyright 1998-2010, 2012, 2013, 2018, 2020 Free Software Foundation, Inc.
 
 This file is part of the GNU MP Library.
 
@@ -553,9 +553,12 @@
 	    cc += mpn_add_n (tpn, tpn, a, n) + a[n];
 	  if (cc != 0)
 	    {
-	      /* FIXME: use MPN_INCR_U here, since carry is not expected.  */
 	      cc = mpn_add_1 (tp, tp, n2, cc);
-	      ASSERT (cc == 0);
+	      /* If mpn_add_1 give a carry (cc != 0),
+		 the result (tp) is at most GMP_NUMB_MAX - 1,
+		 so the following addition can't overflow.
+	      */
+	      tp[0] += cc;
 	    }
 	  a[n] = mpn_sub_n (a, tp, tpn, n) && mpn_add_1 (a, a, n, CNST_LIMB(1));
 	}

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/generic/set_str.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/generic/set_str.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/generic/set_str.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -109,6 +109,8 @@
       mp_ptr powtab_mem, tp;
       powers_t powtab[GMP_LIMB_BITS];
       int chars_per_limb;
+      powers_t *pt;
+      size_t n_pows;
       mp_size_t size;
       mp_size_t un;
       TMP_DECL;
@@ -122,8 +124,8 @@
       /* Allocate one large block for the powers of big_base.  */
       powtab_mem = TMP_BALLOC_LIMBS (mpn_str_powtab_alloc (un));
 
-      size_t n_pows = mpn_compute_powtab (powtab, powtab_mem, un, base);
-      powers_t *pt = powtab + n_pows;
+      n_pows = mpn_compute_powtab (powtab, powtab_mem, un, base);
+      pt = powtab + n_pows;
 
       tp = TMP_BALLOC_LIMBS (mpn_dc_set_str_itch (un));
       size = mpn_dc_set_str (rp, str, str_len, pt, tp);

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/generic/strongfibo.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/generic/strongfibo.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/generic/strongfibo.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -37,6 +37,9 @@
 #include <stdio.h>
 #include "gmp-impl.h"
 
+
+#if HAVE_NATIVE_mpn_rsblsh1_n || HAVE_NATIVE_mpn_sublsh1_n
+#else
 /* Stores |{ap,n}-{bp,n}| in {rp,n},
    returns the sign of {ap,n}-{bp,n}. */
 static int
@@ -65,6 +68,7 @@
     }
   return 0;
 }
+#endif
 
 /* Computes at most count terms of the sequence needed by the
    Lucas-Lehmer-Riesel test, indexing backward:

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/generic/toom_interpolate_12pts.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/generic/toom_interpolate_12pts.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/generic/toom_interpolate_12pts.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -6,7 +6,7 @@
    SAFE TO REACH IT THROUGH DOCUMENTED INTERFACES.  IN FACT, IT IS ALMOST
    GUARANTEED THAT IT WILL CHANGE OR DISAPPEAR IN A FUTURE GNU MP RELEASE.
 
-Copyright 2009, 2010, 2012, 2015 Free Software Foundation, Inc.
+Copyright 2009, 2010, 2012, 2015, 2020 Free Software Foundation, Inc.
 
 This file is part of the GNU MP Library.
 
@@ -38,6 +38,34 @@
 #include "gmp-impl.h"
 
 
+#if GMP_NUMB_BITS < 21
+#error Not implemented: Both sublsh_n(,,,20) should be corrected.
+#endif
+
+#if GMP_NUMB_BITS < 16
+#error Not implemented: divexact_by42525 needs splitting.
+#endif
+
+#if GMP_NUMB_BITS < 12
+#error Not implemented: Hard to adapt...
+#endif
+
+
+/* FIXME: tuneup should decide the best variant */
+#ifndef AORSMUL_FASTER_AORS_AORSLSH
+#define AORSMUL_FASTER_AORS_AORSLSH 1
+#endif
+#ifndef AORSMUL_FASTER_AORS_2AORSLSH
+#define AORSMUL_FASTER_AORS_2AORSLSH 1
+#endif
+#ifndef AORSMUL_FASTER_2AORSLSH
+#define AORSMUL_FASTER_2AORSLSH 1
+#endif
+#ifndef AORSMUL_FASTER_3AORSLSH
+#define AORSMUL_FASTER_3AORSLSH 1
+#endif
+
+
 #if HAVE_NATIVE_mpn_sublsh_n
 #define DO_mpn_sublsh_n(dst,src,n,s,ws) mpn_sublsh_n(dst,dst,src,n,s)
 #else
@@ -57,6 +85,7 @@
 #if HAVE_NATIVE_mpn_addlsh_n
 #define DO_mpn_addlsh_n(dst,src,n,s,ws) mpn_addlsh_n(dst,dst,src,n,s)
 #else
+#if !defined (AORSMUL_FASTER_2AORSLSH) && !defined (AORSMUL_FASTER_AORS_2AORSLSH)
 static mp_limb_t
 DO_mpn_addlsh_n(mp_ptr dst, mp_srcptr src, mp_size_t n, unsigned int s, mp_ptr ws)
 {
@@ -69,6 +98,7 @@
 #endif
 }
 #endif
+#endif
 
 #if HAVE_NATIVE_mpn_subrsh
 #define DO_mpn_subrsh(dst,nd,src,ns,s,ws) mpn_subrsh(dst,nd,src,ns,s)
@@ -84,32 +114,6 @@
 #endif
 
 
-#if GMP_NUMB_BITS < 21
-#error Not implemented: Both sublsh_n(,,,20) should be corrected.
-#endif
-
-#if GMP_NUMB_BITS < 16
-#error Not implemented: divexact_by42525 needs splitting.
-#endif
-
-#if GMP_NUMB_BITS < 12
-#error Not implemented: Hard to adapt...
-#endif
-
-/* FIXME: tuneup should decide the best variant */
-#ifndef AORSMUL_FASTER_AORS_AORSLSH
-#define AORSMUL_FASTER_AORS_AORSLSH 1
-#endif
-#ifndef AORSMUL_FASTER_AORS_2AORSLSH
-#define AORSMUL_FASTER_AORS_2AORSLSH 1
-#endif
-#ifndef AORSMUL_FASTER_2AORSLSH
-#define AORSMUL_FASTER_2AORSLSH 1
-#endif
-#ifndef AORSMUL_FASTER_3AORSLSH
-#define AORSMUL_FASTER_3AORSLSH 1
-#endif
-
 #define BINVERT_9 \
   ((((GMP_NUMB_MAX / 9) << (6 - GMP_NUMB_BITS % 6)) * 8 & GMP_NUMB_MAX) | 0x39)
 

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/generic/toom_interpolate_16pts.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/generic/toom_interpolate_16pts.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/generic/toom_interpolate_16pts.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -6,7 +6,7 @@
    SAFE TO REACH IT THROUGH DOCUMENTED INTERFACES.  IN FACT, IT IS ALMOST
    GUARANTEED THAT IT WILL CHANGE OR DISAPPEAR IN A FUTURE GNU MP RELEASE.
 
-Copyright 2009, 2010, 2012, 2015 Free Software Foundation, Inc.
+Copyright 2009, 2010, 2012, 2015, 2020 Free Software Foundation, Inc.
 
 This file is part of the GNU MP Library.
 
@@ -37,6 +37,7 @@
 
 #include "gmp-impl.h"
 
+
 #if GMP_NUMB_BITS < 29
 #error Not implemented: Both sublsh_n(,,,28) should be corrected; r2 and r5 need one more LIMB.
 #endif
@@ -46,6 +47,21 @@
 #endif
 
 
+/* FIXME: tuneup should decide the best variant */
+#ifndef AORSMUL_FASTER_AORS_AORSLSH
+#define AORSMUL_FASTER_AORS_AORSLSH 1
+#endif
+#ifndef AORSMUL_FASTER_AORS_2AORSLSH
+#define AORSMUL_FASTER_AORS_2AORSLSH 1
+#endif
+#ifndef AORSMUL_FASTER_2AORSLSH
+#define AORSMUL_FASTER_2AORSLSH 1
+#endif
+#ifndef AORSMUL_FASTER_3AORSLSH
+#define AORSMUL_FASTER_3AORSLSH 1
+#endif
+
+
 #if HAVE_NATIVE_mpn_sublsh_n
 #define DO_mpn_sublsh_n(dst,src,n,s,ws) mpn_sublsh_n(dst,dst,src,n,s)
 #else
@@ -65,6 +81,7 @@
 #if HAVE_NATIVE_mpn_addlsh_n
 #define DO_mpn_addlsh_n(dst,src,n,s,ws) mpn_addlsh_n(dst,dst,src,n,s)
 #else
+#if !defined (AORSMUL_FASTER_2AORSLSH) && !defined (AORSMUL_FASTER_AORS_2AORSLSH)
 static mp_limb_t
 DO_mpn_addlsh_n(mp_ptr dst, mp_srcptr src, mp_size_t n, unsigned int s, mp_ptr ws)
 {
@@ -77,6 +94,7 @@
 #endif
 }
 #endif
+#endif
 
 #if HAVE_NATIVE_mpn_subrsh
 #define DO_mpn_subrsh(dst,nd,src,ns,s,ws) mpn_subrsh(dst,nd,src,ns,s)
@@ -92,20 +110,6 @@
 #endif
 
 
-/* FIXME: tuneup should decide the best variant */
-#ifndef AORSMUL_FASTER_AORS_AORSLSH
-#define AORSMUL_FASTER_AORS_AORSLSH 1
-#endif
-#ifndef AORSMUL_FASTER_AORS_2AORSLSH
-#define AORSMUL_FASTER_AORS_2AORSLSH 1
-#endif
-#ifndef AORSMUL_FASTER_2AORSLSH
-#define AORSMUL_FASTER_2AORSLSH 1
-#endif
-#ifndef AORSMUL_FASTER_3AORSLSH
-#define AORSMUL_FASTER_3AORSLSH 1
-#endif
-
 #if GMP_NUMB_BITS < 43
 #define BIT_CORRECTION 1
 #define CORRECTION_BITS GMP_NUMB_BITS

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/powerpc64/mode64/p9/addmul_2.asm
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/powerpc64/mode64/p9/addmul_2.asm	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/powerpc64/mode64/p9/addmul_2.asm	2020-11-15 07:20:51 UTC (rev 56937)
@@ -5,20 +5,31 @@
 dnl  Copyright 2018 Free Software Foundation, Inc.
 
 dnl  This file is part of the GNU MP Library.
-
+dnl
 dnl  The GNU MP Library is free software; you can redistribute it and/or modify
-dnl  it under the terms of the GNU Lesser General Public License as published
-dnl  by the Free Software Foundation; either version 3 of the License, or (at
-dnl  your option) any later version.
-
+dnl  it under the terms of either:
+dnl
+dnl    * the GNU Lesser General Public License as published by the Free
+dnl      Software Foundation; either version 3 of the License, or (at your
+dnl      option) any later version.
+dnl
+dnl  or
+dnl
+dnl    * the GNU General Public License as published by the Free Software
+dnl      Foundation; either version 2 of the License, or (at your option) any
+dnl      later version.
+dnl
+dnl  or both in parallel, as here.
+dnl
 dnl  The GNU MP Library is distributed in the hope that it will be useful, but
 dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-dnl  License for more details.
+dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+dnl  for more details.
+dnl
+dnl  You should have received copies of the GNU General Public License and the
+dnl  GNU Lesser General Public License along with the GNU MP Library.  If not,
+dnl  see https://www.gnu.org/licenses/.
 
-dnl  You should have received a copy of the GNU Lesser General Public License
-dnl  along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.
-
 include(`../config.m4')
 
 C         cycles/limb

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/powerpc64/mode64/p9/mul_2.asm
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/powerpc64/mode64/p9/mul_2.asm	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/powerpc64/mode64/p9/mul_2.asm	2020-11-15 07:20:51 UTC (rev 56937)
@@ -5,20 +5,31 @@
 dnl  Copyright 2018 Free Software Foundation, Inc.
 
 dnl  This file is part of the GNU MP Library.
-
+dnl
 dnl  The GNU MP Library is free software; you can redistribute it and/or modify
-dnl  it under the terms of the GNU Lesser General Public License as published
-dnl  by the Free Software Foundation; either version 3 of the License, or (at
-dnl  your option) any later version.
-
+dnl  it under the terms of either:
+dnl
+dnl    * the GNU Lesser General Public License as published by the Free
+dnl      Software Foundation; either version 3 of the License, or (at your
+dnl      option) any later version.
+dnl
+dnl  or
+dnl
+dnl    * the GNU General Public License as published by the Free Software
+dnl      Foundation; either version 2 of the License, or (at your option) any
+dnl      later version.
+dnl
+dnl  or both in parallel, as here.
+dnl
 dnl  The GNU MP Library is distributed in the hope that it will be useful, but
 dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-dnl  License for more details.
+dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+dnl  for more details.
+dnl
+dnl  You should have received copies of the GNU General Public License and the
+dnl  GNU Lesser General Public License along with the GNU MP Library.  If not,
+dnl  see https://www.gnu.org/licenses/.
 
-dnl  You should have received a copy of the GNU Lesser General Public License
-dnl  along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.
-
 include(`../config.m4')
 
 C         cycles/limb

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/x86/fat/fat.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/x86/fat/fat.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/x86/fat/fat.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -105,6 +105,7 @@
   { "steamroller","AuthenticAMD", MAKE_FMS (21, 0x30) },
   { "excavator",  "AuthenticAMD", MAKE_FMS (21, 0x60) },
   { "jaguar",     "AuthenticAMD", MAKE_FMS (22, 1) },
+  { "zen",        "AuthenticAMD", MAKE_FMS (23, 1) },
 
   { "viac3",      "CentaurHauls", MAKE_FMS (6, 0) },
   { "viac32",     "CentaurHauls", MAKE_FMS (6, 9) },
@@ -335,6 +336,28 @@
 		  CPUVEC_SETUP_atom_sse2;
 		  break;
 
+		case 0x37:		/* Silvermont */
+		case 0x4a:		/* Silvermont */
+		case 0x4c:		/* Airmont */
+		case 0x4d:		/* Silvermont/Avoton */
+		case 0x5a:		/* Silvermont */
+		  TRACE (printf ("  silvermont\n"));
+		  CPUVEC_SETUP_atom;
+		  CPUVEC_SETUP_atom_mmx;
+		  CPUVEC_SETUP_atom_sse2;
+		  CPUVEC_SETUP_silvermont;
+		  break;
+
+		case 0x5c:		/* Goldmont */
+		case 0x5f:		/* Goldmont */
+		case 0x7a:		/* Goldmont Plus */
+		  TRACE (printf ("  goldmont\n"));
+		  CPUVEC_SETUP_atom;
+		  CPUVEC_SETUP_atom_mmx;
+		  CPUVEC_SETUP_atom_sse2;
+		  CPUVEC_SETUP_goldmont;
+		  break;
+
 		case 0x1a:		/* NHM Gainestown */
 		case 0x1b:
 		case 0x1e:		/* NHM Lynnfield/Jasper */
@@ -362,6 +385,7 @@
 		case 0x2a:		/* SBR */
 		case 0x2d:		/* SBR-EP */
 		case 0x3a:		/* IBR */
+		case 0x3e:		/* IBR Ivytown */
 		case 0x3c:		/* Haswell client */
 		case 0x3f:		/* Haswell server */
 		case 0x45:		/* Haswell ULT */
@@ -428,8 +452,6 @@
             case 0x0f:		/* k8 */
             case 0x11:		/* "fam 11h", mix of k8 and k10 */
             case 0x13:		/* unknown, conservatively assume k8  */
-            case 0x16:		/* unknown, conservatively assume k8  */
-            case 0x17:		/* unknown, conservatively assume k8  */
               TRACE (printf ("  k8\n"));
               CPUVEC_SETUP_k7;
               CPUVEC_SETUP_k7_mmx;
@@ -444,6 +466,7 @@
 	      break;
 
             case 0x14:		/* bobcat */
+            case 0x16:		/* jaguar */
               TRACE (printf ("  bobcat\n"));
               CPUVEC_SETUP_k7;
               CPUVEC_SETUP_k7_mmx;
@@ -454,7 +477,15 @@
               TRACE (printf ("  bulldozer\n"));
               CPUVEC_SETUP_k7;
               CPUVEC_SETUP_k7_mmx;
+              CPUVEC_SETUP_bd1;
 	      break;
+
+	    case 0x17:		/* zen */
+	    case 0x19:		/* zen3 */
+	      TRACE (printf ("  zen\n"));
+	      CPUVEC_SETUP_k7;
+	      CPUVEC_SETUP_k7_mmx;
+	      break;
             }
         }
       else if (strcmp (vendor_string, "CentaurHauls") == 0)

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/bd2/gcd_22.asm
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/bd2/gcd_22.asm	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/bd2/gcd_22.asm	2020-11-15 07:20:51 UTC (rev 56937)
@@ -35,7 +35,7 @@
 C AMD K8,K9	12.3
 C AMD K10	 8.0
 C AMD bd1	10.0
-C AMD bd2	 7.2 
+C AMD bd2	 7.2
 C AMD bd3	 ?
 C AMD bd4	 6.7
 C AMD bt1	13.6

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/fat/fat.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/fat/fat.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/fat/fat.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -433,13 +433,14 @@
 	  CPUVEC_SETUP_bt2;
 	  break;
 
-	case 0x15:	    /* bulldozer, piledriver, steamroller, excavator */
+	case 0x15:		/* bulldozer, piledriver, steamroller, excavator */
 	  CPUVEC_SETUP_k8;
 	  CPUVEC_SETUP_k10;
 	  CPUVEC_SETUP_bd1;
 	  break;
 
-	case 0x17:	    /* zen */
+	case 0x17:		/* zen */
+	case 0x19:		/* zen3 */
 	  CPUVEC_SETUP_zen;
 	  break;
 	}

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/skylake/gmp-mparam.h
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/skylake/gmp-mparam.h	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/skylake/gmp-mparam.h	2020-11-15 07:20:51 UTC (rev 56937)
@@ -38,6 +38,7 @@
 /* 3600-4000 MHz Intel Xeon E3-1270v5 Skylake */
 /* FFT tuning limit = 465,990,371 */
 /* Generated by tuneup.c, 2019-10-18, gcc 8.3 */
+/* FFT_TABLEs merged with a new run, 2020-09-25, fft_max_size 1000000000 */
 
 #define MOD_1_NORM_THRESHOLD                 0  /* always */
 #define MOD_1_UNNORM_THRESHOLD               0  /* always */
@@ -135,10 +136,13 @@
     {   3071,15}, {   6911,16}, {   3583,15}, {   7679,14}, \
     {  15359,15}, {   7935,17}, {   2047,16}, {   4095,15}, \
     {   8703,16}, {   4607,15}, {   9983,14}, {  19967,16}, \
-    {   5631,15}, {  11775,17}, {   3071,16}, {  65536,17}, \
-    { 131072,18}, { 262144,19}, { 524288,20}, {1048576,21}, \
-    {2097152,22}, {4194304,23}, {8388608,24} }
-#define MUL_FFT_TABLE3_SIZE 227
+    {   5631,15}, {  11775,17}, {   3071,16}, \
+    {   7679,15}, {  15359,18}, {   2047,17}, {   4095,16}, \
+    {   9727,15}, {  19967,17}, {   5119,16}, {  11775,15}, \
+    {  24063,17}, {   6143,16}, {  12799,17}, {   7167,16}, \
+    {  65536,17}, { 131072,18}, { 262144,19}, { 524288,20}, \
+    {1048576,21}, {2097152,22}, {4194304,23}, {8388608,24} }
+#define MUL_FFT_TABLE3_SIZE 239
 #define MUL_FFT_THRESHOLD                 6272
 
 #define SQR_FFT_MODF_THRESHOLD             400  /* k = 5 */
@@ -192,10 +196,13 @@
     {   6911,16}, {   3583,15}, {   7679,14}, {  15359,17}, \
     {   2047,16}, {   4095,15}, {   8191,16}, {   4607,15}, \
     {   9983,14}, {  19967,16}, {   5631,15}, {  11775,17}, \
-    {   3071,16}, {  65536,17}, { 131072,18}, { 262144,19}, \
+    {   3071,16}, {   7679,15}, {  15359,18}, {   2047,17}, \
+    {   4095,16}, {   9727,15}, {  19967,17}, {   5119,16}, \
+    {  11775,15}, {  23551,17}, {   6143,16}, {  12799,17}, \
+    {   7167,16}, {  65536,17}, { 131072,18}, { 262144,19}, \
     { 524288,20}, {1048576,21}, {2097152,22}, {4194304,23}, \
     {8388608,24} }
-#define SQR_FFT_TABLE3_SIZE 205
+#define SQR_FFT_TABLE3_SIZE 217
 #define SQR_FFT_THRESHOLD                 4224
 
 #define MULLO_BASECASE_THRESHOLD             0  /* always */

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/x86_64-defs.m4
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/x86_64-defs.m4	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/x86_64-defs.m4	2020-11-15 07:20:51 UTC (rev 56937)
@@ -93,10 +93,28 @@
 m4_assert_numargs(1)
 `	GLOBL	$1
 	TYPE($1,`function')
+	COFF_TYPE($1)
 $1:
 ')
 
 
+dnl  Usage: COFF_TYPE(GSYM_PREFIX`'foo)
+dnl
+dnl  Emit COFF style ".def ... .endef" type information for a function, when
+dnl  supported.  The argument should include any GSYM_PREFIX.
+dnl
+dnl  See autoconf macro GMP_ASM_COFF_TYPE for HAVE_COFF_TYPE.
+
+define(COFF_TYPE,
+m4_assert_numargs(1)
+m4_assert_defined(`HAVE_COFF_TYPE')
+`ifelse(HAVE_COFF_TYPE,yes,
+	`.def	$1
+	.scl	2
+	.type	32
+	.endef')')
+
+
 dnl  Usage: ASSERT([cond][,instructions])
 dnl
 dnl  If WANT_ASSERT is 1, output the given instructions and expect the given

Modified: trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/zen2/gmp-mparam.h
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/zen2/gmp-mparam.h	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpn/x86_64/zen2/gmp-mparam.h	2020-11-15 07:20:51 UTC (rev 56937)
@@ -38,6 +38,7 @@
 /* 3600-4400 MHz Matisse */
 /* FFT tuning limit = 703,392,483 */
 /* Generated by tuneup.c, 2019-10-19, gcc 8.3 */
+/* FFT_TABLEs merged with a new run, 2020-09-24,  fft_max_size 2000000000 */
 
 #define MOD_1_NORM_THRESHOLD                 0  /* always */
 #define MOD_1_UNNORM_THRESHOLD               0  /* always */
@@ -147,10 +148,14 @@
     {   4095,15}, {   8959,16}, {   4607,15}, {   9983,14}, \
     {  19967,16}, {   5631,15}, {  11775,17}, {   3071,16}, \
     {   7679,15}, {  15871,18}, {   2047,17}, {   4095,16}, \
-    {   9727,15}, {  19967,17}, {   5119,16}, {  65536,17}, \
+    {   9727,15}, {  19967,17}, \
+    {   5119,16}, {  11775,15}, {  24063,17}, {   6143,16}, \
+    {  12799,17}, {   7167,16}, {  15871,15}, {  31743,18}, \
+    {   4095,17}, {   8191,16}, {  16895,17}, {   9215,16}, \
+    {  19967,17}, {  11263,16}, {  24063,18}, {   6143,17}, \
     { 131072,18}, { 262144,19}, { 524288,20}, {1048576,21}, \
     {2097152,22}, {4194304,23}, {8388608,24} }
-#define MUL_FFT_TABLE3_SIZE 275
+#define MUL_FFT_TABLE3_SIZE 289
 #define MUL_FFT_THRESHOLD                 4736
 
 #define SQR_FFT_MODF_THRESHOLD             396  /* k = 5 */
@@ -223,10 +228,14 @@
     {   9983,14}, {  19967,16}, {   5119,15}, {  10239,16}, \
     {   5631,15}, {  11775,17}, {   3071,16}, {   7679,15}, \
     {  15359,18}, {   2047,17}, {   4095,16}, {   9727,15}, \
-    {  19967,17}, {   5119,16}, {  65536,17}, { 131072,18}, \
-    { 262144,19}, { 524288,20}, {1048576,21}, {2097152,22}, \
-    {4194304,23}, {8388608,24} }
-#define SQR_FFT_TABLE3_SIZE 282
+    {  19967,17}, \
+    {   5119,16}, {  11775,15}, {  23551,17}, {   6143,16}, \
+    {  12799,17}, {   7167,16}, {  15871,15}, {  31743,18}, \
+    {   4095,17}, {   8191,16}, {  16895,17}, {   9215,16}, \
+    {  19967,17}, {  11263,16}, {  24063,18}, {   6143,17}, \
+    { 131072,18}, { 262144,19}, { 524288,20}, {1048576,21}, \
+    {2097152,22}, {4194304,23}, {8388608,24} }
+#define SQR_FFT_TABLE3_SIZE 296
 #define SQR_FFT_THRESHOLD                 3264
 
 #define MULLO_BASECASE_THRESHOLD             0  /* always */

Modified: trunk/Build/source/libs/gmp/gmp-src/mpq/cmp.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpq/cmp.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpq/cmp.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -70,8 +70,9 @@
     {
       int cmp;
 
+      /* Cannot use num1_sign - num2_size, may overflow an "int" */
       if (num1_sign != num2_size)
-	return num1_sign - num2_size;
+	return (num1_sign > num2_size) ? 1 : -1;
 
       cmp = mpn_cmp (PTR(NUM(op1)), PTR(num_op2), num1_size);
       return (num1_sign > 0 ? cmp : -cmp);

Modified: trunk/Build/source/libs/gmp/gmp-src/mpz/cmp.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpz/cmp.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpz/cmp.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -1,8 +1,8 @@
 /* mpz_cmp(u,v) -- Compare U, V.  Return positive, zero, or negative
    based on if U > V, U == V, or U < V.
 
-Copyright 1991, 1993, 1994, 1996, 2001, 2002, 2011 Free Software Foundation,
-Inc.
+Copyright 1991, 1993, 1994, 1996, 2001, 2002, 2011, 2020 Free Software
+Foundation, Inc.
 
 This file is part of the GNU MP Library.
 
@@ -35,15 +35,15 @@
 int
 mpz_cmp (mpz_srcptr u, mpz_srcptr v) __GMP_NOTHROW
 {
-  mp_size_t  usize, vsize, dsize, asize;
+  mp_size_t  usize, vsize, asize;
   mp_srcptr  up, vp;
   int        cmp;
 
   usize = SIZ(u);
   vsize = SIZ(v);
-  dsize = usize - vsize;
-  if (dsize != 0)
-    return dsize;
+  /* Cannot use usize - vsize, may overflow an "int" */
+  if (usize != vsize)
+    return (usize > vsize) ? 1 : -1;
 
   asize = ABS (usize);
   up = PTR(u);

Modified: trunk/Build/source/libs/gmp/gmp-src/mpz/millerrabin.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpz/millerrabin.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpz/millerrabin.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -8,7 +8,7 @@
    With the current implementation, the first 24 MR-tests are substituted by a
    Baillie-PSW probable prime test.
 
-   This implementation the Baillie-PSW test was checked up to 19*2^46,
+   This implementation the Baillie-PSW test was checked up to 31*2^46,
    for smaller values no MR-test is performed, regardless of reps, and
    2 ("surely prime") is returned if the number was not proved composite.
 
@@ -101,11 +101,11 @@
 	  || SIZ (n) - 64 / GMP_NUMB_BITS == (PTR (n) [64 / GMP_NUMB_BITS] < CNST_LIMB(1) << 64 % GMP_NUMB_BITS)
 #endif
 #else
-	  /* Consider numbers up to 19*2^46 that pass the BPSW test as primes.
-	     This implementation was tested up to 19*2^46 = 2^50+2^47+2^46 */
-	  /* 2^4 < 19 = 0b10011 < 2^5 */
-#define GMP_BPSW_LIMB_CONST CNST_LIMB(19)
-#define GMP_BPSW_BITS_CONST (LOG2C(19) - 1)
+	  /* Consider numbers up to 31*2^46 that pass the BPSW test as primes.
+	     This implementation was tested up to 31*2^46 */
+	  /* 2^4 < 31 = 0b11111 < 2^5 */
+#define GMP_BPSW_LIMB_CONST CNST_LIMB(31)
+#define GMP_BPSW_BITS_CONST (LOG2C(31) - 1)
 #define GMP_BPSW_BITS_LIMIT (46 + GMP_BPSW_BITS_CONST)
 
 #define GMP_BPSW_LIMBS_LIMIT (GMP_BPSW_BITS_LIMIT / GMP_NUMB_BITS)

Modified: trunk/Build/source/libs/gmp/gmp-src/mpz/mul.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpz/mul.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpz/mul.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -104,13 +104,15 @@
   if (ALLOC (w) < wsize)
     {
       if (ALLOC (w) != 0)
-	if (wp == up || wp == vp)
-	  {
-	    free_me = wp;
-	    free_me_size = ALLOC (w);
-	  }
-	else
-	  (*__gmp_free_func) (wp, (size_t) ALLOC (w) * GMP_LIMB_BYTES);
+	{
+	  if (wp == up || wp == vp)
+	    {
+	      free_me = wp;
+	      free_me_size = ALLOC (w);
+	    }
+	  else
+	    (*__gmp_free_func) (wp, (size_t) ALLOC (w) * GMP_LIMB_BYTES);
+	}
 
       ALLOC (w) = wsize;
       wp = __GMP_ALLOCATE_FUNC_LIMBS (wsize);

Modified: trunk/Build/source/libs/gmp/gmp-src/mpz/n_pow_ui.c
===================================================================
--- trunk/Build/source/libs/gmp/gmp-src/mpz/n_pow_ui.c	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/gmp-src/mpz/n_pow_ui.c	2020-11-15 07:20:51 UTC (rev 56937)
@@ -4,7 +4,7 @@
    CERTAIN TO BE SUBJECT TO INCOMPATIBLE CHANGES OR DISAPPEAR COMPLETELY IN
    FUTURE GNU MP RELEASES.
 
-Copyright 2001, 2002, 2005, 2012, 2015 Free Software Foundation, Inc.
+Copyright 2001, 2002, 2005, 2012, 2015, 2020 Free Software Foundation, Inc.
 
 This file is part of the GNU MP Library.
 
@@ -32,6 +32,8 @@
 GNU Lesser General Public License along with the GNU MP Library.  If not,
 see https://www.gnu.org/licenses/.  */
 
+#include <stdlib.h>
+#include <stdio.h>
 #include "gmp-impl.h"
 #include "longlong.h"
 
@@ -170,6 +172,7 @@
 #else
   mp_limb_t      b_twolimbs[2];
 #endif
+  mp_limb_t ovfl;
   TMP_DECL;
 
   TRACE (printf ("mpz_n_pow_ui rp=0x%lX bp=0x%lX bsize=%ld e=%lu (0x%lX)\n",
@@ -213,7 +216,14 @@
   /* Strip low zero bits from b. */
   count_trailing_zeros (btwos, blimb);
   blimb >>= btwos;
-  rtwos_bits = e * btwos;
+
+  umul_ppmm (ovfl, rtwos_bits, e, btwos);
+  if (ovfl)
+    {
+      fprintf (stderr, "gmp: overflow in mpz type\n");
+      abort ();
+    }
+
   rtwos_limbs += rtwos_bits / GMP_NUMB_BITS;
   rtwos_bits %= GMP_NUMB_BITS;
   TRACE (printf ("trailing zero btwos=%d rtwos_limbs=%ld rtwos_bits=%lu\n",
@@ -368,7 +378,15 @@
 
   ASSERT (blimb != 0);
   count_leading_zeros (cnt, blimb);
-  ralloc = (bsize*GMP_NUMB_BITS - cnt + GMP_NAIL_BITS) * e / GMP_NUMB_BITS + 5;
+
+  umul_ppmm (ovfl, ralloc, (bsize*GMP_NUMB_BITS - cnt + GMP_NAIL_BITS), e);
+  if (ovfl)
+    {
+      fprintf (stderr, "gmp: overflow in mpz type\n");
+      abort ();
+    }
+  ralloc = ralloc / GMP_NUMB_BITS + 5;
+
   TRACE (printf ("ralloc %ld, from bsize=%ld blimb=0x%lX cnt=%d\n",
 		 ralloc, bsize, blimb, cnt));
   rp = MPZ_NEWALLOC (r, ralloc + rtwos_limbs);

Modified: trunk/Build/source/libs/gmp/version.ac
===================================================================
--- trunk/Build/source/libs/gmp/version.ac	2020-11-15 00:53:54 UTC (rev 56936)
+++ trunk/Build/source/libs/gmp/version.ac	2020-11-15 07:20:51 UTC (rev 56937)
@@ -8,4 +8,4 @@
 dnl --------------------------------------------------------
 dnl
 dnl  m4-include this file to define the current gmp version
-m4_define([gmp_version], [6.2.0])
+m4_define([gmp_version], [6.2.1])



More information about the tex-live-commits mailing list.