[libvirt PATCH] meson: avoid bogus warnings from clang and g_autoptr
Daniel P. Berrangé
berrange at redhat.com
Tue Aug 31 16:10:23 UTC 2021
On Tue, Aug 31, 2021 at 05:23:08PM +0200, Pavel Hrdina wrote:
> On Tue, Aug 31, 2021 at 03:08:19PM +0100, Daniel P. Berrangé wrote:
> > Clang has previously had trouble with G_DEFINE_AUTOPTR_CLEANUP_FUNC
> > generated code, thinking it was unused. We turn off -Wunused-function
> > to avoid tripping up on that with CLang.
> >
> > New CLang has started having trouble with g_autoptr now too. In usage
> > scenarios where the variable is set, but never again read, it thinks
> > it is unused not realizing the destructor has useful side effects.
> > For this we have to skip -Wunused-but-set-variable on CLang.
>
> s/CLang/Clang/
>
> > Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> > ---
> > meson.build | 20 ++++++++++++++++++++
> > 1 file changed, 20 insertions(+)
> >
> > diff --git a/meson.build b/meson.build
> > index 5af09d319a..dbd70b6483 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -470,6 +470,26 @@ if get_option('warning_level') == '2'
> > supported_cc_flags += [ '-Wno-unused-function' ]
> > endif
> >
> > + # Clang complains about unused variables in many scenarios arelated
>
> s/arelated/related/
>
> > + # to attribute((cleanup)) aka g_auto*
> > + w_unused_but_set_var_args = [ '-Wunused-but-set-variable', '-Werror' ]
> > + w_unused_but_set_var_code = '''
> > + static inline void free_pointer (void *p) {
> > + void **pp = (void**)p;
> > + free (*pp);
> > + }
> > +
> > + int main(void) {
> > + __attribute__((cleanup(free_pointer))) char *buffer = 0x0;
> > + buffer = 0x1;
> > + }
> > + '''
> > + # We previously turned on unused-but-set-variable, so we must turn
> > + # it off again explicitly now.
> > + if not cc.compiles(w_unused_but_set_var_code, args: w_unused_but_set_var_args)
> > + supported_cc_flags += [ '-Wno-unused-but-set-variable' ]
> > + endif
> > +
> > endif
> > add_project_arguments(supported_cc_flags, language: 'c')
>
> Reviewed-by: Pavel Hrdina <phrdina at redhat.com>
Turns out this broke on macOS / FreeBSD with older CLang so will need
a v2.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
More information about the libvir-list
mailing list