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

Gert Wollny gert.wollny at collabora.com
Wed Jun 20 08:24:51 UTC 2018


Hi Dylan & Eric, 

are you fine with how the flag is added now in meson? If you don't have
any complaints I'm going to push the changes later today. 

many thanks, 
Gert 

Am Dienstag, den 19.06.2018, 10:07 +0200 schrieb Gert Wollny:
> 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++
> 
> v4: * meson.build add -Wno-missing-field-initializers to
>       c_args instead of no_override_init_args (Eric Engstrom)
> 
> v5: * configure.ac: Correct copy/paste error with CFLAGS/CXXFLAGS
> 
> 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  | 13 ++++++++++---
>  2 files changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 7a0e475420..1529e47c95 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],          [CXXFLAGS="$CXXFLAGS -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 65ae32172d..c02b3d5c41 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -762,6 +762,10 @@ foreach a : ['-Wall', '-Werror=implicit-
> function-declaration',
>      c_args += a
>    endif
>  endforeach
> +if cc.has_argument('-Wmissing-field-initializers')
> +  c_args += '-Wno-missing-field-initializers'
> +endif
> +
>  c_vis_args = []
>  if cc.has_argument('-fvisibility=hidden')
>    c_vis_args += '-fvisibility=hidden'
> @@ -778,9 +782,12 @@ 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']


More information about the mesa-dev mailing list