[Mesa-dev] [PATCH 01/24] configure.ac: Add CFLAG -Wno-missing-field-initializers (v3)

Eric Engestrom eric.engestrom at intel.com
Mon Jun 11 10:05:29 UTC 2018


On Monday, 2018-06-11 11:33:20 +0200, Gert Wollny wrote:
> This warning is misleading: When a struct is partially initialized without
> assigning to the structure members by name, then the remaining fields
> will be zeroed out, and this warning will be issued (if enabled). If, on the
> other hand, the partial initialization is done by assigning to named members,
> the remaining structure elements may hold random data, but the warning is not
> issued. Since in Mesa the first approach to initialize structure elements is
> used very often, and it is usually assumed that the remaining elements are
> zeroed out, heeding this warning would be counter-productive.
> 
> v2: - add -Wno-missing-field-initializers to meson-build
>     - fix empty line error
>     (both Eric Engestrom)
> 
> v3: * check for -Wmissing-field-initializers warning and then disable it
>       because gcc and clang always accept -Wno-* (Dylan Baker)
>     * Also disable this warning for C++
> 
> Reviewed-by: Marek Olšák <marek.olsak at amd.com> (v1)
> Reviewed-by: Emil Velikov <emil.velikov at collabora.com> (v2)
> Signed-off-by: Gert Wollny <gert.wollny at collabora.com>
> ---
>  configure.ac |  4 ++++
>  meson.build  | 11 +++++++----
>  2 files changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 75ee1a7c01..6a9e56f974 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -302,7 +302,10 @@ AX_CHECK_COMPILE_FLAG([-Wall],                                 [CFLAGS="$CFLAGS
>  AX_CHECK_COMPILE_FLAG([-Werror=implicit-function-declaration], [CFLAGS="$CFLAGS -Werror=implicit-function-declaration"])
>  AX_CHECK_COMPILE_FLAG([-Werror=missing-prototypes],            [CFLAGS="$CFLAGS -Werror=missing-prototypes"])
>  AX_CHECK_COMPILE_FLAG([-Wmissing-prototypes],                  [CFLAGS="$CFLAGS -Wmissing-prototypes"])
> +dnl Dylan Baker: gcc and clang always accepr -Wno-*, hence check for the original warning, then set the no-* flag
> +AX_CHECK_COMPILE_FLAG([-Wmissing-field-initializers],          [CFLAGS="$CFLAGS -Wno-missing-field-initializers"])
>  AX_CHECK_COMPILE_FLAG([-fno-math-errno],                       [CFLAGS="$CFLAGS -fno-math-errno"])
> +
>  AX_CHECK_COMPILE_FLAG([-fno-trapping-math],                    [CFLAGS="$CFLAGS -fno-trapping-math"])
>  AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],                   [VISIBILITY_CFLAGS="-fvisibility=hidden"])
>  
> @@ -314,6 +317,7 @@ AX_CHECK_COMPILE_FLAG([-Wall],                                 [CXXFLAGS="$CXXFL
>  AX_CHECK_COMPILE_FLAG([-fno-math-errno],                       [CXXFLAGS="$CXXFLAGS -fno-math-errno"])
>  AX_CHECK_COMPILE_FLAG([-fno-trapping-math],                    [CXXFLAGS="$CXXFLAGS -fno-trapping-math"])
>  AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],                   [VISIBILITY_CXXFLAGS="-fvisibility=hidden"])
> +AX_CHECK_COMPILE_FLAG([-Wmissing-field-initializers],          [CFLAGS="$CFLAGS -Wno-missing-field-initializers"])
>  AC_LANG_POP([C++])
>  
>  # Flags to help ensure that certain portions of the code -- and only those
> diff --git a/meson.build b/meson.build
> index 160bbfa30b..668fa38328 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -760,12 +760,15 @@ endforeach
>  
>  # For some reason, the test for -Wno-foo always succeeds with gcc, even if the
>  # option is not supported. Hence, check for -Wfoo instead.
> -if cpp.has_argument('-Wnon-virtual-dtor')
> -  cpp_args += '-Wno-non-virtual-dtor'
> -endif
> +
> +foreach a : ['non-virtual-dtor', 'missing-field-initializers']
> +  if cpp.has_argument('-W' + a)
> +    cpp_args += '-Wno-' + a
> +  endif
> +endforeach
>  
>  no_override_init_args = []
> -foreach a : ['override-init', 'initializer-overrides']
> +foreach a : ['override-init', 'initializer-overrides', 'missing-field-initializers']

I'm not sure `no_override_init_args` is the right array to put
`missing-field-initializers` in; maybe you should add a c_args to add
everywhere?
Dylan, thoughts?

>    if cc.has_argument('-W' + a)
>      no_override_init_args += '-Wno-' + a
>    endif
> -- 
> 2.17.1
> 


More information about the mesa-dev mailing list