2024-04-27 Paul Eggert <eggert@cs.ucla.edu>
+ nullptr: work around GCC 14 nullptr sentinel bug
+ * m4/nullptr.m4 (gl_NULLPTR): Work around GCC bug 114780.
+
stddef: work around GCC 14 stddef.h bugs
* lib/stddef.in.h: Do nothing if _@GUARD_PREFIX@_STDDEF_H is
defined, as stddef.h has already been included. This works
Some platforms lack @code{nullptr}:
For C: GCC 12, Clang 15, and other pre-2023 C compilers.
For C++: pre-2011 C++ compilers.
+
+@item
+Some platforms incorrectly warn when @code{nullptr} is a sentinel argument:
+GCC 13.2 and 14.0.
@end itemize
Portability problems not fixed by Gnulib:
# nullptr.m4
-# serial 1
+# serial 2
dnl Copyright 2023-2024 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_CACHE_CHECK([for C nullptr], [gl_cv_c_nullptr],
[AC_COMPILE_IFELSE(
[AC_LANG_SOURCE([[int *p = nullptr;]])],
- [gl_cv_c_nullptr=yes],
+ [gl_cv_c_nullptr=yes
+ # Work around <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114780>.
+ gl_saved_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -Wall -Werror"
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[void f (char const *, ...) __attribute__ ((sentinel));]],
+ [[f ("", nullptr);]])],
+ [],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[void f (char const *, ...) __attribute__ ((sentinel));]],
+ [[f ("", (void *) 0);]])],
+ [gl_cv_c_nullptr='not as a sentinel'])])
+ CFLAGS=$gl_saved_CFLAGS],
[gl_cv_c_nullptr=no])])
gl_c_nullptr=$gl_cv_c_nullptr
AC_LANG_POP([C])],