From 4331769c0fd522045ab6b30e0ea5dff59ec73019 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Fri, 9 Aug 2024 15:34:53 +0200 Subject: [PATCH] Turn on -Wimplicit-fallthrough by default if available Reviewed-by: Adhemerval Zanella --- Makeconfig | 2 +- configure | 26 ++++++++++++++++++++++++++ configure.ac | 9 +++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/Makeconfig b/Makeconfig index 2d4343b604..a87ff7b1d3 100644 --- a/Makeconfig +++ b/Makeconfig @@ -888,7 +888,7 @@ host-test-program-cmd = $(host-built-program-cmd) endif # Extra flags to pass to GCC. -+gccwarn := -Wall -Wwrite-strings -Wundef ++gccwarn := -Wall -Wwrite-strings -Wundef $(cc-option-wimplicit-fallthrough) ifeq ($(enable-werror),yes) +gccwarn += -Werror endif diff --git a/configure b/configure index 1d543548cd..ec0b62db36 100755 --- a/configure +++ b/configure @@ -7465,6 +7465,32 @@ if test $libc_cv_cc_loop_to_function = yes; then fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -Wimplicit-fallthrough" >&5 +printf %s "checking for -Wimplicit-fallthrough... " >&6; } +if test ${libc_cv_cc_wimplicit_fallthrough+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if { ac_try='${CC-cc} -Werror -Wimplicit-fallthrough -xc /dev/null -S -o /dev/null' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + libc_cv_cc_wimplicit_fallthrough=-Wimplicit-fallthrough +else case e in #( + e) libc_cv_cc_wimplicit_fallthrough= ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_wimplicit_fallthrough" >&5 +printf "%s\n" "$libc_cv_cc_wimplicit_fallthrough" >&6; } +config_vars="$config_vars +cc-option-wimplicit-fallthrough = $libc_cv_cc_wimplicit_fallthrough" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libgd" >&5 printf %s "checking for libgd... " >&6; } if test "$with_gd" != "no"; then diff --git a/configure.ac b/configure.ac index 9cbc0bf68f..7c9b57789e 100644 --- a/configure.ac +++ b/configure.ac @@ -1468,6 +1468,15 @@ if test $libc_cv_cc_loop_to_function = yes; then fi AC_SUBST(libc_cv_cc_loop_to_function) +AC_CACHE_CHECK([for -Wimplicit-fallthrough], + libc_cv_cc_wimplicit_fallthrough, [dnl +LIBC_TRY_CC_OPTION([-Werror -Wimplicit-fallthrough], + [libc_cv_cc_wimplicit_fallthrough=-Wimplicit-fallthrough], + [libc_cv_cc_wimplicit_fallthrough=]) +]) +LIBC_CONFIG_VAR([cc-option-wimplicit-fallthrough], + [$libc_cv_cc_wimplicit_fallthrough]) + dnl Check whether we have the gd library available. AC_MSG_CHECKING(for libgd) if test "$with_gd" != "no"; then