[PATCH 04/59] configure: Use -Wno-maybe-uninitialized iff compiler supports it

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Tue Oct 21 11:04:28 GMT 2025



On 20/10/25 16:41, Sam James wrote:
> Adhemerval Zanella <adhemerval.zanella@linaro.org> writes:
> 
>> clang does not support the flag.
> 
> Clang does have -Wsometimes-uninitialized but I think (not checked) it's
> still implemented in the FE.
> 
> Anyway, suppressions for GCC's -Wmaybe-uninitialized wouldn't
> necessarily hold for -Wsometimes-uninitialized (I think it would be
> harmless but I'd want to check whether -Wsometimes-uninitialized flags
> things in glibc and categorise the result sfirst).
> 
> So, all that said, it's fine, and:
> 
> Reviewed-by: Sam James <sam@gentoo.org>

Indeed, although the idea of this patchset is to make it clang work with
current warnings used in the code.  I think a future work would to be
evaluate whether current flags are still useful and maybe enable extra
warnings (such as -Wimplicit-fallthrough done by 4331769c0fd522).

After this initial work, my plan is send patches that re-enable warning
and tests that were disable with clang (e377a7a8ecb7d829a62789286b9f6aff6e17ded7 
and 0813cb584731c2df3c37bb3e3631ef37a821d599).

> 
> 
>> ---
>>  configure         | 26 ++++++++++++++++++++++++++
>>  configure.ac      |  9 +++++++++
>>  timezone/Makefile |  2 +-
>>  3 files changed, 36 insertions(+), 1 deletion(-)
>>
>> diff --git a/configure b/configure
>> index 222f04db22..fa888eeb9f 100755
>> --- a/configure
>> +++ b/configure
>> @@ -7613,6 +7613,32 @@ config_vars="$config_vars
>>  config-cflags-wno-ignored-attributes = $libc_cv_wno_ignored_attributes"
>>  
>>  
>> +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -Wno-maybe-uninitialized" >&5
>> +printf %s "checking for -Wno-maybe-uninitialized... " >&6; }
>> +if test ${libc_cv_wno_maybe_uninitialized+y}
>> +then :
>> +  printf %s "(cached) " >&6
>> +else case e in #(
>> +  e) 		if { ac_try='${CC-cc} -Werror -Wno-maybe-uninitialized -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_wno_maybe_uninitialized=-Wno-maybe-uninitialized
>> +else case e in #(
>> +  e) libc_cv_wno_maybe_uninitialized= ;;
>> +esac
>> +fi
>> + ;;
>> +esac
>> +fi
>> +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_wno_maybe_uninitialized" >&5
>> +printf "%s\n" "$libc_cv_wno_maybe_uninitialized" >&6; }
>> +config_vars="$config_vars
>> +config-cflags-wno-maybe-uninitialized = $libc_cv_wno_maybe_uninitialized"
>> +
>>  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether cc puts quotes around section names" >&5
>>  printf %s "checking whether cc puts quotes around section names... " >&6; }
>>  if test ${libc_cv_have_section_quotes+y}
>> diff --git a/configure.ac b/configure.ac
>> index af57b0cbae..fe78f7f802 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -1444,6 +1444,15 @@ LIBC_CONFIG_VAR([config-cflags-wno-ignored-attributes],
>>  		[$libc_cv_wno_ignored_attributes])
>>  AC_SUBST(libc_cv_test_wno_ignored_attributes)
>>  
>> +AC_CACHE_CHECK([for -Wno-maybe-uninitialized],
>> +                libc_cv_wno_maybe_uninitialized, [dnl
>> +		LIBC_TRY_CC_OPTION([-Werror -Wno-maybe-uninitialized],
>> +				   [libc_cv_wno_maybe_uninitialized=-Wno-maybe-uninitialized],
>> +				   [libc_cv_wno_maybe_uninitialized=])
>> +])
>> +LIBC_CONFIG_VAR([config-cflags-wno-maybe-uninitialized],
>> +		[$libc_cv_wno_maybe_uninitialized])
>> +
>>  AC_CACHE_CHECK(whether cc puts quotes around section names,
>>  	       libc_cv_have_section_quotes,
>>  	       [cat > conftest.c <<EOF
>> diff --git a/timezone/Makefile b/timezone/Makefile
>> index ebe5cf73a1..6c7a7d4f4d 100644
>> --- a/timezone/Makefile
>> +++ b/timezone/Makefile
>> @@ -68,7 +68,7 @@ tz-cflags = -DTZDIR='"$(zonedir)"' \
>>  	    -DTZDEFRULES='"$(posixrules-file)"' \
>>  	    -DTM_GMTOFF=tm_gmtoff -DTM_ZONE=tm_zone \
>>  	    -DHAVE_GETTEXT -DUSE_LTZ=0 -D_ISOMAC -DTZ_DOMAIN='"libc"' \
>> -	    -include $(common-objpfx)config.h -Wno-maybe-uninitialized
>> +	    -include $(common-objpfx)config.h $(config-cflags-wno-maybe-uninitialized)
>>  
>>  # The -Wno-unused-variable flag is used to prevent GCC 6
>>  # from warning about time_t_min and time_t_max which are



More information about the Libc-alpha mailing list