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(a)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(a)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 :|