Add -Wshadow=compatible-local to the standard compilation flags
Sincecd4e8caaa
, we've been able to build the source tree with -Wshadow=compatible-local without any warnings. Lots of work was done by Justin Pryzby and I (David) to get all our code to compile warning free with that flag. In that process, 2 bugs (16d69ec29
andaf7d270dd
) were discovered and fixed. Additionally, "git log --grep=shadow" shows that there is no shortage of other bugs that have been fixed over the years which were caused by variable shadowing. In light of the above, it seems very much worthwhile to add at least -Wshadow=compatible-local to our standard compilation flags. We *may* want to go further and take this to -Wshadow=local in the future, but we're not ready for that today, so let's add -Wshadow=compatible-local now to help make sure we don't introduce further local variable shadowing. Author: Andres Freund Discussion: https://postgr.es/m/20221006003920.6xlqaoccxwisza5k@awork3.anarazel.de
This commit is contained in:
parent
80ef926758
commit
0fe954c285
3 changed files with 94 additions and 0 deletions
91
configure
vendored
91
configure
vendored
|
@ -5852,6 +5852,97 @@ if test x"$pgac_cv_prog_CXX_cxxflags__Wcast_function_type" = x"yes"; then
|
|||
fi
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports -Wshadow=compatible-local, for CFLAGS" >&5
|
||||
$as_echo_n "checking whether ${CC} supports -Wshadow=compatible-local, for CFLAGS... " >&6; }
|
||||
if ${pgac_cv_prog_CC_cflags__Wshadow_compatible_local+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
pgac_save_CFLAGS=$CFLAGS
|
||||
pgac_save_CC=$CC
|
||||
CC=${CC}
|
||||
CFLAGS="${CFLAGS} -Wshadow=compatible-local"
|
||||
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__Wshadow_compatible_local=yes
|
||||
else
|
||||
pgac_cv_prog_CC_cflags__Wshadow_compatible_local=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"
|
||||
CC="$pgac_save_CC"
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CC_cflags__Wshadow_compatible_local" >&5
|
||||
$as_echo "$pgac_cv_prog_CC_cflags__Wshadow_compatible_local" >&6; }
|
||||
if test x"$pgac_cv_prog_CC_cflags__Wshadow_compatible_local" = x"yes"; then
|
||||
CFLAGS="${CFLAGS} -Wshadow=compatible-local"
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CXX} supports -Wshadow=compatible-local, for CXXFLAGS" >&5
|
||||
$as_echo_n "checking whether ${CXX} supports -Wshadow=compatible-local, for CXXFLAGS... " >&6; }
|
||||
if ${pgac_cv_prog_CXX_cxxflags__Wshadow_compatible_local+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
pgac_save_CXXFLAGS=$CXXFLAGS
|
||||
pgac_save_CXX=$CXX
|
||||
CXX=${CXX}
|
||||
CXXFLAGS="${CXXFLAGS} -Wshadow=compatible-local"
|
||||
ac_save_cxx_werror_flag=$ac_cxx_werror_flag
|
||||
ac_cxx_werror_flag=yes
|
||||
ac_ext=cpp
|
||||
ac_cpp='$CXXCPP $CPPFLAGS'
|
||||
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_cxx_try_compile "$LINENO"; then :
|
||||
pgac_cv_prog_CXX_cxxflags__Wshadow_compatible_local=yes
|
||||
else
|
||||
pgac_cv_prog_CXX_cxxflags__Wshadow_compatible_local=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
|
||||
CXXFLAGS="$pgac_save_CXXFLAGS"
|
||||
CXX="$pgac_save_CXX"
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CXX_cxxflags__Wshadow_compatible_local" >&5
|
||||
$as_echo "$pgac_cv_prog_CXX_cxxflags__Wshadow_compatible_local" >&6; }
|
||||
if test x"$pgac_cv_prog_CXX_cxxflags__Wshadow_compatible_local" = x"yes"; then
|
||||
CXXFLAGS="${CXXFLAGS} -Wshadow=compatible-local"
|
||||
fi
|
||||
|
||||
|
||||
# This was included in -Wall/-Wformat in older GCC versions
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports -Wformat-security, for CFLAGS" >&5
|
||||
|
|
|
@ -508,6 +508,8 @@ if test "$GCC" = yes -a "$ICC" = no; then
|
|||
PGAC_PROG_CXX_CFLAGS_OPT([-Wimplicit-fallthrough=3])
|
||||
PGAC_PROG_CC_CFLAGS_OPT([-Wcast-function-type])
|
||||
PGAC_PROG_CXX_CFLAGS_OPT([-Wcast-function-type])
|
||||
PGAC_PROG_CC_CFLAGS_OPT([-Wshadow=compatible-local])
|
||||
PGAC_PROG_CXX_CFLAGS_OPT([-Wshadow=compatible-local])
|
||||
# This was included in -Wall/-Wformat in older GCC versions
|
||||
PGAC_PROG_CC_CFLAGS_OPT([-Wformat-security])
|
||||
PGAC_PROG_CXX_CFLAGS_OPT([-Wformat-security])
|
||||
|
|
|
@ -1709,6 +1709,7 @@ common_warning_flags = [
|
|||
'-Wmissing-format-attribute',
|
||||
'-Wimplicit-fallthrough=3',
|
||||
'-Wcast-function-type',
|
||||
'-Wshadow=compatible-local',
|
||||
# This was included in -Wall/-Wformat in older GCC versions
|
||||
'-Wformat-security',
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue