
On Tue, Sep 14, 2021 at 03:28:06PM +0200, Tim Wiederhake wrote:
On Fri, 2021-09-10 at 14:35 +0200, Ján Tomko wrote:
On a Friday in 2021, Tim Wiederhake wrote:
Workaround for a bug in clang. Clang emits an unused-variable warning if the variable is only accessed on scope exit by a destructor function. Note that gcc does not exhibit this behavior.
See https://bugs.llvm.org/show_bug.cgi?id=3888 and https://bugs.llvm.org/show_bug.cgi?id=43482.
Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/util/glibcompat.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
https://listman.redhat.com/archives/libvir-list/2021-August/msg00863.html
Jano
From the mail you linked:
It's our usage that is weird here.
I disagree. I believe our usage of `g_auto*` (and in extension, `__attribute__((cleanup))`) is exactly as this feature is meant to be used.
These are not needed since in all cases, the G_GNUC_UNUSED can be used unconditionally for both gcc and CLang in the respective macros.
That would disable unused-variable-checking for other compilers as well, e.g. gcc, robbing us of a valuable diagnostic.
From GCC's POV, the attribute((cleanup(freefunc))) annotation gets expanded into a set of calls to freefunc(). So any variable declared with a "cleanup" attribute will always appear used to GCC, because of
I don't think G_GNUC_UNUSED impacts GCC warnings at all. these auto inserted calls. $ cat demo.c #include <stdlib.h> static void freeit(void *ptrptr) { void *ptr = *(void **)ptrptr; free(ptr); } void foo(void) { __attribute__((cleanup(freeit))) char *a = malloc(1); __attribute__((unused)) __attribute__((cleanup(freeit))) char *b = malloc(1); __attribute__((unused)) char *c = malloc(1); char *d = malloc(1); char *e = malloc(1); free(d); } $ gcc -c -Wall demo.c demo.c: In function ‘foo’: demo.c:13:9: warning: unused variable ‘b’ [-Wunused-variable] 13 | char *e = malloc(1); | ^ 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 :|