From: Tom Lane Date: Mon, 13 Dec 2021 06:28:13 +0000 (-0500) Subject: Disable -Wsometimes-uninitialized warnings in the 9.2 branch. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cea316881f1f109fe06243f1294313ead913b498;p=thirdparty%2Fpostgresql.git Disable -Wsometimes-uninitialized warnings in the 9.2 branch. In 9.2, we didn't yet teach the compiler that elog(ERROR) doesn't return, which means that the compiler's opinion about whether variable dereferences are reachable isn't worth much. Back-patching the commits that fixed that seems unduly invasive, so instead silence related complaints with a big hammer. -Wsometimes-uninitialized is a clang-ism; gcc seems to spell this warning option differently. However, I do not observe any such compiler warnings in 9.2 with gcc 11.2.1, so for now we needn't do anything for gcc. Discussion: https://postgr.es/m/d0316012-ece7-7b7e-2d36-9c38cb77cb3b@enterprisedb.com --- diff --git a/configure b/configure index 4c5629d53af..f5a3031979c 100755 --- a/configure +++ b/configure @@ -4670,6 +4670,73 @@ fi if test -n "$NOT_THE_CFLAGS"; then CFLAGS="$CFLAGS -Wno-stringop-truncation" fi + # Similarly disable sometimes-uninitialized warnings, because in this + # branch we have not taught the compiler that elog(ERROR) doesn't return, + # so that the compiler's opinion about this isn't worth much. + NOT_THE_CFLAGS="" + { $as_echo "$as_me:$LINENO: checking whether $CC supports -Wsometimes-uninitialized" >&5 +$as_echo_n "checking whether $CC supports -Wsometimes-uninitialized... " >&6; } +if test "${pgac_cv_prog_cc_cflags__Wsometimes_uninitialized+set}" = set; then + $as_echo_n "(cached) " >&6 +else + pgac_save_CFLAGS=$CFLAGS +CFLAGS="$pgac_save_CFLAGS -Wsometimes-uninitialized" +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__Wsometimes_uninitialized=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + pgac_cv_prog_cc_cflags__Wsometimes_uninitialized=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__Wsometimes_uninitialized" >&5 +$as_echo "$pgac_cv_prog_cc_cflags__Wsometimes_uninitialized" >&6; } +if test x"$pgac_cv_prog_cc_cflags__Wsometimes_uninitialized" = x"yes"; then + NOT_THE_CFLAGS="${NOT_THE_CFLAGS} -Wsometimes-uninitialized" +fi + + if test -n "$NOT_THE_CFLAGS"; then + CFLAGS="$CFLAGS -Wno-sometimes-uninitialized" + fi elif test "$ICC" = yes; then # Intel's compiler has a bug/misoptimization in checking for # division by NAN (NaN == 0), -mp1 fixes it, so add it to the CFLAGS. diff --git a/configure.in b/configure.in index 3314fd98a15..e98e8c00566 100644 --- a/configure.in +++ b/configure.in @@ -453,6 +453,14 @@ if test "$GCC" = yes -a "$ICC" = no; then if test -n "$NOT_THE_CFLAGS"; then CFLAGS="$CFLAGS -Wno-stringop-truncation" fi + # Similarly disable sometimes-uninitialized warnings, because in this + # branch we have not taught the compiler that elog(ERROR) doesn't return, + # so that the compiler's opinion about this isn't worth much. + NOT_THE_CFLAGS="" + PGAC_PROG_CC_VAR_OPT(NOT_THE_CFLAGS, [-Wsometimes-uninitialized]) + if test -n "$NOT_THE_CFLAGS"; then + CFLAGS="$CFLAGS -Wno-sometimes-uninitialized" + fi elif test "$ICC" = yes; then # Intel's compiler has a bug/misoptimization in checking for # division by NAN (NaN == 0), -mp1 fixes it, so add it to the CFLAGS.