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@xxxxxxxxxx> > --- > 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@xxxxxxxxxx>
Attachment:
signature.asc
Description: PGP signature