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é <berra...@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 <phrd...@redhat.com>

Attachment: signature.asc
Description: PGP signature

Reply via email to