On a Wednesday in 2021, Tim Wiederhake wrote:
See comment for rationale.


Missing commit message ;)

Signed-off-by: Tim Wiederhake <twied...@redhat.com>
---
src/util/glibcompat.h | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

diff --git a/src/util/glibcompat.h b/src/util/glibcompat.h
index 697687b967..fe495c5c32 100644
--- a/src/util/glibcompat.h
+++ b/src/util/glibcompat.h
@@ -86,3 +86,23 @@ char *vir_g_strdup_vprintf(const char *msg, va_list args)
#define g_fsync vir_g_fsync

void vir_g_source_unref(GSource *src, GMainContext *ctx);
+
+/*
+ * Clang falsely tags variable definitions as unused if the only access happens

In Clang's defense, the warning is legitimate and has caught many unused
variables.

It's our usage that is weird here.

+ * during the variables destruction at scope exit. See
+ * https://bugs.llvm.org/show_bug.cgi?id=3888 and
+ * https://bugs.llvm.org/show_bug.cgi?id=43482.
+ */
+#if defined(__clang__)
+# define vir_g_auto(X) g_auto(X) G_GNUC_UNUSED
+# define vir_g_autolist(X) g_autolist(X) G_GNUC_UNUSED
+# define vir_g_autoptr(X) g_autoptr(X) G_GNUC_UNUSED
+# define vir_g_autoqueue(X) g_autoqueue(X) G_GNUC_UNUSED
+# define vir_g_autoslist(X) g_autoslist(X) G_GNUC_UNUSED

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.

Jano

+#else
+# define vir_g_auto(X) g_auto(X)
+# define vir_g_autolist(X) g_autolist(X)
+# define vir_g_autoptr(X) g_autoptr(X)
+# define vir_g_autoqueue(X) g_autoqueue(X)
+# define vir_g_autoslist(X) g_autoslist(X)
+#endif /* __clang__ */
--
2.31.1

Attachment: signature.asc
Description: PGP signature

Reply via email to