From 2265342d09faf952ae89bedd5a45350abfc80018 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 27 Apr 2024 10:31:45 -0700 Subject: [PATCH] nullptr: work around GCC 14 nullptr sentinel bug * m4/nullptr.m4 (gl_NULLPTR): Work around GCC bug 114780. --- ChangeLog | 5 +++++ m4/nullptr.m4 | 18 ++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7d9dbb506f..3801e5811e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2024-04-27 Paul Eggert + + nullptr: work around GCC 14 nullptr sentinel bug + * m4/nullptr.m4 (gl_NULLPTR): Work around GCC bug 114780. + 2024-04-27 Paul Eggert stddef: work around a GCC 14 stddef.h bug diff --git a/m4/nullptr.m4 b/m4/nullptr.m4 index 1f8ab51b85..8d59b135ac 100644 --- a/m4/nullptr.m4 +++ b/m4/nullptr.m4 @@ -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 . + 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])], -- 2.39.5