From ca8fd341e165e1b3f99deb07889aa58db7f8a898 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 20 Sep 2022 18:59:53 -0400 Subject: [PATCH] Disable -Wdeprecated-non-prototype in the back branches. There doesn't seem to be any good ABI-preserving way to silence clang 15's -Wdeprecated-non-prototype warnings about our tree-walk APIs. While we've fixed it properly in HEAD, the only way to not see hundreds of these in the back branches is to disable the warnings. We're not going to do anything about them, so we might as well disable them. I noticed that we also get some of these warnings about fmgr.c's support for V0 function call convention, in branches before v10 where we removed that. That's another area we aren't going to change, so turning off the warning seems fine for that too. Per project policy, this is a candidate for back-patching into out-of-support branches: it suppresses annoying compiler warnings but changes no behavior. Hence, back-patch all the way to 9.2. Discussion: https://postgr.es/m/CA+hUKGKpHPDTv67Y+s6yiC8KH5OXeDg6a-twWo_xznKTcG0kSA@mail.gmail.com --- configure | 41 +++++++++++++++++++++++++++++++++++++++++ configure.in | 7 +++++++ 2 files changed, 48 insertions(+) diff --git a/configure b/configure index 665bc47987..1c143b4bc0 100755 --- a/configure +++ b/configure @@ -4832,6 +4832,47 @@ fi if test -n "$NOT_THE_CFLAGS"; then CFLAGS="$CFLAGS -Wno-compound-token-split-by-macro" fi + # Similarly remove clang 15+'s deprecated-non-prototype, as it warns about + # tree-walking APIs that we can't reasonably change in the back branches. + NOT_THE_CFLAGS="" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wdeprecated-non-prototype" >&5 +$as_echo_n "checking whether $CC supports -Wdeprecated-non-prototype... " >&6; } +if ${pgac_cv_prog_cc_cflags__Wdeprecated_non_prototype+:} false; then : + $as_echo_n "(cached) " >&6 +else + pgac_save_CFLAGS=$CFLAGS +CFLAGS="$pgac_save_CFLAGS -Wdeprecated-non-prototype" +ac_save_c_werror_flag=$ac_c_werror_flag +ac_c_werror_flag=yes +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + pgac_cv_prog_cc_cflags__Wdeprecated_non_prototype=yes +else + pgac_cv_prog_cc_cflags__Wdeprecated_non_prototype=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_c_werror_flag=$ac_save_c_werror_flag +CFLAGS="$pgac_save_CFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_cc_cflags__Wdeprecated_non_prototype" >&5 +$as_echo "$pgac_cv_prog_cc_cflags__Wdeprecated_non_prototype" >&6; } +if test x"$pgac_cv_prog_cc_cflags__Wdeprecated_non_prototype" = x"yes"; then + NOT_THE_CFLAGS="${NOT_THE_CFLAGS} -Wdeprecated-non-prototype" +fi + + if test -n "$NOT_THE_CFLAGS"; then + CFLAGS="$CFLAGS -Wno-deprecated-non-prototype" + fi # Similarly disable useless truncation warnings from gcc 8+ NOT_THE_CFLAGS="" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wformat-truncation" >&5 diff --git a/configure.in b/configure.in index 465a7de911..0646054ec1 100644 --- a/configure.in +++ b/configure.in @@ -472,6 +472,13 @@ if test "$GCC" = yes -a "$ICC" = no; then if test -n "$NOT_THE_CFLAGS"; then CFLAGS="$CFLAGS -Wno-compound-token-split-by-macro" fi + # Similarly remove clang 15+'s deprecated-non-prototype, as it warns about + # tree-walking APIs that we can't reasonably change in the back branches. + NOT_THE_CFLAGS="" + PGAC_PROG_CC_VAR_OPT(NOT_THE_CFLAGS, [-Wdeprecated-non-prototype]) + if test -n "$NOT_THE_CFLAGS"; then + CFLAGS="$CFLAGS -Wno-deprecated-non-prototype" + fi # Similarly disable useless truncation warnings from gcc 8+ NOT_THE_CFLAGS="" PGAC_PROG_CC_VAR_OPT(NOT_THE_CFLAGS, [-Wformat-truncation])