[PATCH] meson: disable "maybe uninitilized" errors with -Og

Michael S. Tsirkin posted 1 patch 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/f559b622eb2d1a384b4f30583a8af10531f4b032.1785144729.git.mst@redhat.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, "Philippe Mathieu-Daudé" <philmd@mailo.com>, Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
meson.build | 4 ++++
1 file changed, 4 insertions(+)
[PATCH] meson: disable "maybe uninitilized" errors with -Og
Posted by Michael S. Tsirkin 2 months ago
GCC's "maybe uninitilized" warnings depend on optimizations
for code flow analysis, and produce false positive errors
with -Og. Default build gives us coverage with that,
so let's just disable with -Og.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 meson.build | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/meson.build b/meson.build
index 164328ded8..a119dae6ac 100644
--- a/meson.build
+++ b/meson.build
@@ -742,6 +742,10 @@ warn_flags = [
   '-Wno-typedef-redefinition',
 ]
 
+if get_option('optimization') == 'g'
+  warn_flags += ['-Wno-error=maybe-uninitialized']
+endif
+
 if host_os != 'darwin'
   tsa_has_cleanup = cc.compiles('''
     struct __attribute__((capability("mutex"))) mutex {};
-- 
MST
Re: [PATCH] meson: disable "maybe uninitilized" errors with -Og
Posted by Daniel P. Berrangé 1 month, 2 weeks ago
On Mon, Jul 27, 2026 at 09:30:51AM -0400, Michael S. Tsirkin wrote:
> GCC's "maybe uninitilized" warnings depend on optimizations
> for code flow analysis, and produce false positive errors
> with -Og. Default build gives us coverage with that,
> so let's just disable with -Og.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  meson.build | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/meson.build b/meson.build
> index 164328ded8..a119dae6ac 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -742,6 +742,10 @@ warn_flags = [
>    '-Wno-typedef-redefinition',
>  ]
>  
> +if get_option('optimization') == 'g'
> +  warn_flags += ['-Wno-error=maybe-uninitialized']
> +endif

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|


Re: [PATCH] meson: disable "maybe uninitilized" errors with -Og
Posted by Michael S. Tsirkin 1 month, 2 weeks ago
On Mon, Jul 27, 2026 at 09:30:54AM -0400, Michael S. Tsirkin wrote:
> GCC's "maybe uninitilized" warnings depend on optimizations
> for code flow analysis, and produce false positive errors
> with -Og. Default build gives us coverage with that,
> so let's just disable with -Og.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

ping, comments on this?

As an alternative, I can see us doing this for everyone
and only adding -Werror=maybe-uninitialized in CI for
known good compiler/flag combos which do not produce
too many false positives.


> ---
>  meson.build | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/meson.build b/meson.build
> index 164328ded8..a119dae6ac 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -742,6 +742,10 @@ warn_flags = [
>    '-Wno-typedef-redefinition',
>  ]
>  
> +if get_option('optimization') == 'g'
> +  warn_flags += ['-Wno-error=maybe-uninitialized']
> +endif
> +
>  if host_os != 'darwin'
>    tsa_has_cleanup = cc.compiles('''
>      struct __attribute__((capability("mutex"))) mutex {};
> -- 
> MST
Re: [PATCH] meson: disable "maybe uninitilized" errors with -Og
Posted by Daniel P. Berrangé 1 month, 2 weeks ago
On Mon, Aug 10, 2026 at 02:57:06AM -0400, Michael S. Tsirkin wrote:
> On Mon, Jul 27, 2026 at 09:30:54AM -0400, Michael S. Tsirkin wrote:
> > GCC's "maybe uninitilized" warnings depend on optimizations
> > for code flow analysis, and produce false positive errors
> > with -Og. Default build gives us coverage with that,
> > so let's just disable with -Og.
> > 
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> 
> ping, comments on this?
> 
> As an alternative, I can see us doing this for everyone
> and only adding -Werror=maybe-uninitialized in CI for
> known good compiler/flag combos which do not produce
> too many false positives.

I see no compelling reason to disable it universally - the
problems are not too numerous, and IMHO if the code is
complex enough that the compiler is worried, then it is
better to have explicit initializers as that makes the code
easier to interpret for humans too.

> 
> 
> > ---
> >  meson.build | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/meson.build b/meson.build
> > index 164328ded8..a119dae6ac 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -742,6 +742,10 @@ warn_flags = [
> >    '-Wno-typedef-redefinition',
> >  ]
> >  
> > +if get_option('optimization') == 'g'
> > +  warn_flags += ['-Wno-error=maybe-uninitialized']
> > +endif
> > +
> >  if host_os != 'darwin'
> >    tsa_has_cleanup = cc.compiles('''
> >      struct __attribute__((capability("mutex"))) mutex {};
> > -- 
> > MST
> 

With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|