Hi Sam,

On Wed, Feb 04, 2026 at 04:50:38PM +0000, Sam James wrote:
> Mark Wielaard <[email protected]> writes:
> 
> > clang 21 doesn't like ommitting a parameter name when not in C23 mode.
> 
> One of the things you and I discussed a little while ago ;)
> 
> You can use -Wmissing-parameter-name to catch this in GCC, btw.

Thanks, I forgot about that. The attached patch contains a configure
check to make sure -Wmissing-parameter-name is available. Adding it
did catch the same issue with gcc.


>From 713426053e829d552806e57abe9cd00c33a5cd3b Mon Sep 17 00:00:00 2001
From: Mark Wielaard <[email protected]>
Date: Sat, 7 Feb 2026 01:48:26 +0100
Subject: [PATCH] configure: Add -Wmissing-parameter-name if available

Before C23 omitting parameter names in function definitions isn't
supported. Add -Wmissing-parameter-name (available since GCC 15) to
catch this.

        * configure.ac: Add HAVE_MISSING_PARAMETER_NAME_WARNING check.
        * config/eu.am: Set MISSING_PARAMETER_NAME_WARNING based on
        HAVE_MISSING_PARAMETER_NAME_WARNING.
        (AM_CFLAGS): Add MISSING_PARAMETER_NAME_WARNING.

Signed-off-by: Mark Wielaard <[email protected]>
---
 config/eu.am |  8 +++++++-
 configure.ac | 10 ++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/config/eu.am b/config/eu.am
index 0f4aa9f0364c..756e7058e9c2 100644
--- a/config/eu.am
+++ b/config/eu.am
@@ -111,11 +111,17 @@ else
 USE_AFTER_FREE3_WARNING=
 endif
 
+if HAVE_MISSING_PARAMETER_NAME_WARNING
+MISSING_PARAMETER_NAME_WARNING=-Wmissing-parameter-name
+else
+MISSING_PARAMETER_NAME_WARNING=
+endif
+
 AM_CFLAGS = -Wall -Wshadow -Wformat=2 \
            -Wold-style-definition -Wstrict-prototypes $(TRAMPOLINES_WARNING) \
            $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \
            $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \
-           $(USE_AFTER_FREE3_WARNING) \
+           $(USE_AFTER_FREE3_WARNING) $(MISSING_PARAMETER_NAME_WARNING) \
            $(if $($(*F)_no_Werror),,-Werror) \
            $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
            $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \
diff --git a/configure.ac b/configure.ac
index 58e58af2c58c..c9287039955d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -665,6 +665,16 @@ CFLAGS="$old_CFLAGS"])
 AM_CONDITIONAL(HAVE_USE_AFTER_FREE3_WARNING,
               [test "x$ac_cv_use_after_free3" != "xno"])
 
+AC_CACHE_CHECK([whether the compiler accepts -Wmissing-parameter-name], 
ac_cv_missing_parameter_name, [dnl
+old_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -Wmissing-parameter-name -Werror"
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],
+                 ac_cv_missing_parameter_name=yes,
+                 ac_cv_missing_parameter_name=no)
+CFLAGS="$old_CFLAGS"])
+AM_CONDITIONAL(HAVE_MISSING_PARAMETER_NAME_WARNING,
+              [test "x$ac_cv_missing_parameter_name" != "xno"])
+
 AC_CACHE_CHECK([whether the compiler accepts -fno-addrsig], ac_cv_fno_addrsig, 
[dnl
 old_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -fno-addrsig -Werror"
-- 
2.52.0

Reply via email to