postgres.git / summary / log / commit / refs

commit    5d3ce0d823c8133f22f65d858970b55747ebbb08
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Tue Sep 20 22:59:54 2022 +0000
First released in: 10.23, 11.18, 12.13, 13.9, 14.6, 15.0

    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 | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ configure.in | 7 +++++++ 2 files changed, 73 insertions(+) diff --git a/configure b/configure index f5a3031979c..50803aba6bf 100755 --- a/configure +++ b/configure @@ -4541,6 +4541,72 @@ 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:$LINENO: checking whether $CC supports -Wdeprecated-non-prototype" >&5 +$as_echo_n "checking whether $CC supports -Wdeprecated-non-prototype... " >&6; } +if test "${pgac_cv_prog_cc_cflags__Wdeprecated_non_prototype+set}" = set; 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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + pgac_cv_prog_cc_cflags__Wdeprecated_non_prototype=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + 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:$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:$LINENO: checking whether $CC supports -Wformat-truncation" >&5 diff --git a/configure.in b/configure.in index e98e8c00566..61fc5dcc1d8 100644 --- a/configure.in +++ b/configure.in @@ -442,6 +442,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]) [parent: 6f9ea6cf3338]