]> git.eshelyaron.com Git - emacs.git/commitdiff
Update from Gnulib
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 6 Aug 2020 22:24:47 +0000 (15:24 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 6 Aug 2020 22:25:30 +0000 (15:25 -0700)
This incorporates:
2020-08-06 libgmp: add <gmp/gmp.h> support
2020-08-06 Consider that clang defines __OPTIMIZE__ like GCC does
2020-08-06 Use __builtin_expect with clang everywhere
2020-08-05 Use __builtin_clz{,l,ll} with clang, also on Windows
2020-08-05 Use __builtin_ctz{,l,ll} and __builtin_ffs{,l,ll} with clang
2020-07-31 _GL_CMP: Improve documentation
2020-07-30 alloca, largefile: sync with Autoconf master
* lib/c++defs.h, lib/cdefs.h, lib/count-leading-zeros.h:
* lib/count-trailing-zeros.h, m4/alloca.m4, m4/gnulib-common.m4:
* m4/largefile.m4, m4/libgmp.m4:
Copy from Gnulib.
* lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.

lib/c++defs.h
lib/cdefs.h
lib/count-leading-zeros.h
lib/count-trailing-zeros.h
lib/gnulib.mk.in
m4/alloca.m4
m4/gnulib-common.m4
m4/gnulib-comp.m4
m4/largefile.m4
m4/libgmp.m4

index 3e6aaabc9ce62b647d86f4bc6def0893ced22783..182c2b3a88d0cfe5415c3178179e66ae076d522e 100644 (file)
    _GL_CXXALIASWARN_2 (func, namespace)
 /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
    we enable the warning only when not optimizing.  */
-# if !__OPTIMIZE__
+# if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
 #  define _GL_CXXALIASWARN_2(func,namespace) \
     _GL_WARN_ON_USE (func, \
                      "The symbol ::" #func " refers to the system function. " \
    _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
 /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
    we enable the warning only when not optimizing.  */
-# if !__OPTIMIZE__
+# if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
     _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
                          "The symbol ::" #func " refers to the system function. " \
index d8e4a00033309906bba887c7b84240d68bacdab8..f6c447ad3775e305a8c76d5792a68806b8584ea3 100644 (file)
 # endif
 #endif
 
-#if __GNUC__ >= 3
+#if (__GNUC__ >= 3) || (__clang_major__ >= 4)
 # define __glibc_unlikely(cond)        __builtin_expect ((cond), 0)
 # define __glibc_likely(cond)  __builtin_expect ((cond), 1)
 #else
index 7e88c8cb9d04f08408c1db71150d9a49e1a3dc64..7cf605a5f649a23089a0cf84f4b6006b023a4546 100644 (file)
@@ -38,7 +38,8 @@ extern "C" {
    expand to code that computes the number of leading zeros of the local
    variable 'x' of type TYPE (an unsigned integer type) and return it
    from the current function.  */
-#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) \
+    || (__clang_major__ >= 4)
 # define COUNT_LEADING_ZEROS(BUILTIN, MSC_BUILTIN, TYPE)                \
   return x ? BUILTIN (x) : CHAR_BIT * sizeof x;
 #elif _MSC_VER
index 1eb5fb919f4454b43f1cc56031efaa953ebdabe3..727b21dcc564f490bd8713e2e42894620f0b2b81 100644 (file)
@@ -38,7 +38,8 @@ extern "C" {
    expand to code that computes the number of trailing zeros of the local
    variable 'x' of type TYPE (an unsigned integer type) and return it
    from the current function.  */
-#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) \
+    || (__clang_major__ >= 4)
 # define COUNT_TRAILING_ZEROS(BUILTIN, MSC_BUILTIN, TYPE)               \
   return x ? BUILTIN (x) : CHAR_BIT * sizeof x;
 #elif _MSC_VER
index 4dc180d2e33b283fc242aa203bc733a14ea5db7d..92d0621c61a604cb5ea649fcb377d241e2ff6635 100644 (file)
@@ -246,9 +246,10 @@ GL_GENERATE_ALLOCA_H = @GL_GENERATE_ALLOCA_H@
 GL_GENERATE_BYTESWAP_H = @GL_GENERATE_BYTESWAP_H@
 GL_GENERATE_ERRNO_H = @GL_GENERATE_ERRNO_H@
 GL_GENERATE_EXECINFO_H = @GL_GENERATE_EXECINFO_H@
-GL_GENERATE_GMP_H = @GL_GENERATE_GMP_H@
+GL_GENERATE_GMP_GMP_H = @GL_GENERATE_GMP_GMP_H@
 GL_GENERATE_IEEE754_H = @GL_GENERATE_IEEE754_H@
 GL_GENERATE_LIMITS_H = @GL_GENERATE_LIMITS_H@
+GL_GENERATE_MINI_GMP_H = @GL_GENERATE_MINI_GMP_H@
 GL_GENERATE_STDALIGN_H = @GL_GENERATE_STDALIGN_H@
 GL_GENERATE_STDDEF_H = @GL_GENERATE_STDDEF_H@
 GL_GENERATE_STDINT_H = @GL_GENERATE_STDINT_H@
@@ -1085,7 +1086,6 @@ gamedir = @gamedir@
 gamegroup = @gamegroup@
 gameuser = @gameuser@
 gl_GNULIB_ENABLED_03e0aaad4cb89ca757653bd367a6ccb7 = @gl_GNULIB_ENABLED_03e0aaad4cb89ca757653bd367a6ccb7@
-gl_GNULIB_ENABLED_2049e887c7e5308faad27b3f894bb8c9 = @gl_GNULIB_ENABLED_2049e887c7e5308faad27b3f894bb8c9@
 gl_GNULIB_ENABLED_260941c0e5dc67ec9e87d1fb321c300b = @gl_GNULIB_ENABLED_260941c0e5dc67ec9e87d1fb321c300b@
 gl_GNULIB_ENABLED_5264294aa0a5557541b53c8c741f7f31 = @gl_GNULIB_ENABLED_5264294aa0a5557541b53c8c741f7f31@
 gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c = @gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c@
@@ -2021,15 +2021,22 @@ ifeq (,$(OMIT_GNULIB_MODULE_libgmp))
 
 BUILT_SOURCES += $(GMP_H)
 
+ifneq (,$(GL_GENERATE_MINI_GMP_H))
 # Build gmp.h as a wrapper for mini-gmp.h when using mini-gmp.
-ifneq (,$(GL_GENERATE_GMP_H))
 gmp.h: $(top_builddir)/config.status
        echo '#include "mini-gmp.h"' >$@-t
        mv $@-t $@
 else
+ifneq (,$(GL_GENERATE_GMP_GMP_H))
+# Build gmp.h as a wrapper for gmp/gmp.h.
+gmp.h: $(top_builddir)/config.status
+       echo '#include <gmp/gmp.h>' >$@-t
+       mv $@-t $@
+else
 gmp.h: $(top_builddir)/config.status
        rm -f $@
 endif
+endif
 MOSTLYCLEANFILES += gmp.h gmp.h-t
 
 EXTRA_DIST += mini-gmp-gnulib.c mini-gmp.c mini-gmp.h
index d3e98c51bf462ad4035d683e74283b934fc654db..b777f8450ce0b223543f71bfc665adba08f4677b 100644 (file)
@@ -1,4 +1,4 @@
-# alloca.m4 serial 16
+# alloca.m4 serial 17
 dnl Copyright (C) 2002-2004, 2006-2007, 2009-2020 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
@@ -50,10 +50,13 @@ AC_DEFUN([gl_FUNC_ALLOCA],
 # STACK_DIRECTION is already handled by AC_FUNC_ALLOCA.
 AC_DEFUN([gl_PREREQ_ALLOCA], [:])
 
-# This works around a bug in autoconf <= 2.68.
-# See <https://lists.gnu.org/r/bug-gnulib/2011-06/msg00277.html> and
-# <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=6cd9f12520b0d6f76d3230d7565feba1ecf29497>.
-# Also it has a simplification that is not yet in Autoconf.
+m4_version_prereq([2.70], [], [
+
+# This works around a bug in autoconf <= 2.68 and has simplifications
+# from 2.70.  See:
+# https://lists.gnu.org/r/bug-gnulib/2011-06/msg00277.html
+# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=6cd9f12520b0d6f76d3230d7565feba1ecf29497
+# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=15edf7fd8094fd14a89d9891dd72a9624762597a
 
 # _AC_LIBOBJ_ALLOCA
 # -----------------
@@ -102,3 +105,4 @@ AH_VERBATIM([STACK_DIRECTION],
 @%:@undef STACK_DIRECTION])dnl
 AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction)
 ])
+])
index 57f3a7801188b194000ea23cfa3849d0900d2fa4..50acc0a474b582c8031de1d9c449434bcf7b9d88 100644 (file)
@@ -1,4 +1,4 @@
-# gnulib-common.m4 serial 52
+# gnulib-common.m4 serial 53
 dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -300,7 +300,9 @@ AC_DEFUN([gl_COMMON_BODY], [
 #define _GL_ASYNC_SAFE
 ])
   AH_VERBATIM([micro_optimizations],
-[/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2.
+[/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where
+   n1 and n2 are expressions without side effects, that evaluate to real
+   numbers (excluding NaN).
    It returns
      1  if n1 > n2
      0  if n1 == n2
index 4472af81b703a6cde9e017de6dc3235a03f2fd84..5bfa1473eddc8defb393e54beabb3ac667a2d6a6 100644 (file)
@@ -346,7 +346,7 @@ AC_DEFUN([gl_INIT],
   AC_REQUIRE([gl_LARGEFILE])
   gl___INLINE
   gl_LIBGMP
-  if test -n "$GMP_H"; then
+  if test $HAVE_LIBGMP != yes; then
     AC_LIBOBJ([mini-gmp-gnulib])
   fi
   gl_LIMITS_H
index 8017ca70eb440e239458dc14b17bbfc9a8362128..f7140dd0a3a5fa38b1428512b0b47ef21eda7485 100644 (file)
@@ -35,7 +35,7 @@ m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES],
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
   int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721
                        && LARGE_OFF_T % 2147483647 == 1)
                       ? 1 : -1]];[]dnl
index 82c065e2c2c5fee99da139cb0f5cc912292d5f57..1025f06a775d8a02f3915a92b1d7c537dc1830be 100644 (file)
@@ -1,4 +1,4 @@
-# libgmp.m4 serial 4
+# libgmp.m4 serial 5
 # Configure the GMP library or a replacement.
 dnl Copyright 2020 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
@@ -18,50 +18,54 @@ AC_DEFUN([gl_LIBGMP],
     [AS_HELP_STRING([--without-libgmp],
        [do not use the GNU Multiple Precision (GMP) library;
         this is the default on systems lacking libgmp.])])
-  case "$with_libgmp" in
-    no)
-      HAVE_LIBGMP=no
-      LIBGMP=
-      LTLIBGMP=
-      ;;
-    *)
-      dnl Prefer AC_LIB_HAVE_LINKFLAGS if the havelib module is also in use.
-      m4_ifdef([gl_HAVE_MODULE_HAVELIB],
-        [AC_LIB_HAVE_LINKFLAGS([gmp], [],
-           [#include <gmp.h>],
-           [static const mp_limb_t x[2] = { 0x73, 0x55 };
-            mpz_t tmp;
-            mpz_roinit_n (tmp, x, 2);
-           ],
-           [no])],
-        [gl_saved_LIBS=$LIBS
-         AC_SEARCH_LIBS([__gmpz_roinit_n], [gmp])
-         LIBS=$gl_saved_LIBS
-         case $ac_cv_search___gmpz_roinit_n in
-           'none needed')
-             HAVE_LIBGMP=yes LIBGMP=;;
-           -*)
-             HAVE_LIBGMP=yes LIBGMP=$ac_cv_search___gmpz_roinit_n;;
-           *)
-             HAVE_LIBGMP=no LIBGMP=;;
-         esac
-         LTLIBGMP=$LIBGMP
-         AC_SUBST([HAVE_LIBGMP])
-         AC_SUBST([LIBGMP])
-         AC_SUBST([LTLIBGMP])])
-      if test "$with_libgmp,$HAVE_LIBGMP" = yes,no; then
-        AC_MSG_ERROR(
-          [GMP not found, although --with-libgmp was specified.m4_ifdef(
-             [AC_LIB_HAVE_LINKFLAGS],
-             [ Try specifying --with-libgmp-prefix=DIR.])])
-      fi
-      ;;
-  esac
-  if test $HAVE_LIBGMP = yes; then
+  HAVE_LIBGMP=no
+  LIBGMP=
+  LTLIBGMP=
+  AS_IF([test "$with_libgmp" != no],
+    [AC_CHECK_HEADERS([gmp.h gmp/gmp.h], [break])
+     dnl Prefer AC_LIB_HAVE_LINKFLAGS if the havelib module is also in use.
+     AS_IF([test "$ac_cv_header_gmp_h" = yes ||
+            test "$ac_cv_header_gmp_gmp_h" = yes],
+       [m4_ifdef([gl_HAVE_MODULE_HAVELIB],
+          [AC_LIB_HAVE_LINKFLAGS([gmp], [],
+             [#if HAVE_GMP_H
+              # include <gmp.h>
+              #else
+              # include <gmp/gmp.h>
+              #endif],
+             [static const mp_limb_t x[2] = { 0x73, 0x55 };
+              mpz_t tmp;
+              mpz_roinit_n (tmp, x, 2);
+             ],
+             [no])],
+          [gl_saved_LIBS=$LIBS
+           AC_SEARCH_LIBS([__gmpz_roinit_n], [gmp])
+           LIBS=$gl_saved_LIBS
+           case $ac_cv_search___gmpz_roinit_n in
+             'none needed')
+               HAVE_LIBGMP=yes;;
+             -*)
+               HAVE_LIBGMP=yes
+               LIBGMP=$ac_cv_search___gmpz_roinit_n
+               LTLIBGMP=$LIBGMP;;
+           esac
+           AC_SUBST([HAVE_LIBGMP])
+           AC_SUBST([LIBGMP])
+           AC_SUBST([LTLIBGMP])])])
+     if test "$with_libgmp,$HAVE_LIBGMP" = yes,no; then
+       AC_MSG_ERROR(
+         [GMP not found, although --with-libgmp was specified.m4_ifdef(
+            [AC_LIB_HAVE_LINKFLAGS],
+            [ Try specifying --with-libgmp-prefix=DIR.])])
+     fi])
+  if test $HAVE_LIBGMP = yes && test "$ac_cv_header_gmp_h" = yes; then
     GMP_H=
   else
     GMP_H=gmp.h
   fi
   AC_SUBST([GMP_H])
-  AM_CONDITIONAL([GL_GENERATE_GMP_H], [test -n "$GMP_H"])
+  AM_CONDITIONAL([GL_GENERATE_MINI_GMP_H],
+    [test $HAVE_LIBGMP != yes])
+  AM_CONDITIONAL([GL_GENERATE_GMP_GMP_H],
+    [test $HAVE_LIBGMP = yes && test "$ac_cv_header_gmp_h" != yes])
 ])