bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] manywarnings: cater to more gcc infelicities


From: Eric Blake
Subject: Re: [PATCH] manywarnings: cater to more gcc infelicities
Date: Tue, 02 Oct 2012 09:20:06 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120911 Thunderbird/15.0.1

On 09/06/2012 03:42 PM, Eric Blake wrote:
> Some versions of gcc (at least 4.2.1) noisily warn if
> -Wuninitialized is given without -O; in isolation, configure
> learns that the warning option is supported, but when later
> compiling with -Werror, this makes builds fail.  If the
> option will have no effect for the configured choice of
> $CFLAGS, then it is not worth including in the set.
> 
> * m4/manywarnings.m4 (gl_MANYWARN_ALL_GCC): Add test for
> -Wuninitialized without -O.

No comments, so I pushed this.

> +++ b/m4/manywarnings.m4
> @@ -1,4 +1,4 @@
> -# manywarnings.m4 serial 4
> +# manywarnings.m4 serial 5
>  dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
>  dnl This file is free software; the Free Software Foundation
>  dnl gives unlimited permission to copy and/or distribute it,
> @@ -35,14 +35,12 @@ AC_DEFUN([gl_MANYWARN_COMPLEMENT],
>  # make sure your gcc understands it.
>  AC_DEFUN([gl_MANYWARN_ALL_GCC],
>  [
> -  dnl First, check if -Wno-missing-field-initializers is needed.
> -  dnl -Wmissing-field-initializers is implied by -W, but that issues
> -  dnl warnings with GCC version before 4.7, for the common idiom
> -  dnl of initializing types on the stack to zero, using { 0, }
> +  dnl First, check for some issues that only occur when combining multiple
> +  dnl gcc warning categories.
>    AC_REQUIRE([AC_PROG_CC])
>    if test -n "$GCC"; then
> 
> -    dnl First, check -W -Werror -Wno-missing-field-initializers is supported
> +    dnl Check if -W -Werror -Wno-missing-field-initializers is supported
>      dnl with the current $CC $CFLAGS $CPPFLAGS.
>      AC_MSG_CHECKING([whether -Wno-missing-field-initializers is supported])
>      AC_CACHE_VAL([gl_cv_cc_nomfi_supported], [
> @@ -77,8 +75,24 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC],
>        ])
>        AC_MSG_RESULT([$gl_cv_cc_nomfi_needed])
>      fi
> +
> +    dnl Next, check if -Werror -Wuninitialized is useful with the
> +    dnl user's choice of $CFLAGS; some versions of gcc warn that it
> +    dnl has no effect if -O is not also used
> +    AC_MSG_CHECKING([whether -Wuninitialized is supported])
> +    AC_CACHE_VAL([gl_cv_cc_uninitialized_supported], [
> +      gl_save_CFLAGS="$CFLAGS"
> +      CFLAGS="$CFLAGS -Werror -Wuninitialized"
> +      AC_COMPILE_IFELSE(
> +        [AC_LANG_PROGRAM([[]], [[]])],
> +        [gl_cv_cc_uninitialized_supported=yes],
> +        [gl_cv_cc_uninitialized_supported=no])
> +      CFLAGS="$gl_save_CFLAGS"])
> +    AC_MSG_RESULT([$gl_cv_cc_uninitialized_supported])
> +
>    fi
> 
> +  # List all gcc warning categories.
>    gl_manywarn_set=
>    for gl_manywarn_item in \
>      -W \
> @@ -197,10 +211,14 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC],
>      gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
>    done
> 
> -  # Disable the missing-field-initializers warning if needed
> +  # Disable specific options as needed.
>    if test "$gl_cv_cc_nomfi_needed" = yes; then
>      gl_manywarn_set="$gl_manywarn_set -Wno-missing-field-initializers"
>    fi
> 
> +  if test "$gl_cv_cc_uninitialized_supported" = no; then
> +    gl_manywarn_set="$gl_manywarn_set -Wno-uninitialized"
> +  fi
> +
>    $1=$gl_manywarn_set
>  ])
> 

-- 
Eric Blake   address@hidden    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]