]> Savannah Git Hosting - gnulib.git/commitdiff
nullptr: work around GCC 14 nullptr sentinel bug
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 27 Apr 2024 17:31:45 +0000 (10:31 -0700)
committerBruno Haible <bruno@clisp.org>
Fri, 17 May 2024 23:21:21 +0000 (01:21 +0200)
* m4/nullptr.m4 (gl_NULLPTR): Work around GCC bug 114780.

ChangeLog
m4/nullptr.m4

index 7d9dbb506f3769f3507d432bd1d3251606fe60ba..3801e5811ed68f360758d232add87bfb4da334c8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+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.
+
 2024-04-27  Paul Eggert  <eggert@cs.ucla.edu>
 
        stddef: work around a GCC 14 stddef.h bug
index 1f8ab51b8548f505b675d1dd226598ba1037436f..8d59b135ace64eaea784520ec8f84b9bc4a2b0f5 100644 (file)
@@ -1,6 +1,6 @@
 # Check for nullptr that conforms to C23 and C++11.
 
-dnl Copyright 2023 Free Software Foundation, Inc.
+dnl Copyright 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,
 dnl with or without modifications, as long as this notice is preserved.
@@ -12,7 +12,21 @@ AC_DEFUN([gl_NULLPTR],
      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])],