]> git.ipfire.org Git - thirdparty/xz.git/commitdiff
liblzma: Suppress -Wunused-function warning.
authorJia Tan <jiat0218@gmail.com>
Wed, 19 Jul 2023 15:36:00 +0000 (23:36 +0800)
committerJia Tan <jiat0218@gmail.com>
Wed, 19 Jul 2023 15:36:00 +0000 (23:36 +0800)
Clang 16.0.0 and earlier have a bug that the ifunc resolver function
triggers the -Wunused-function warning. The resolver function is static
and only "used" by the __attribute__((__ifunc()__)).

At this time, the bug is still unresolved, but has been reported:
https://github.com/llvm/llvm-project/issues/63957

This is not a problem in GCC.

src/liblzma/check/crc64_fast.c

index e2d4ec3cf42ae4e770f7104aa0bff6770da08022..f6e872ed32b50f85956ef67d438c479e16dc5283 100644 (file)
@@ -441,6 +441,13 @@ is_clmul_supported(void)
 typedef uint64_t (*crc64_func_type)(
                const uint8_t *buf, size_t size, uint64_t crc);
 
+// Clang 16.0.0 and older has a bug where it marks the ifunc resolver
+// function as unused since it is static and never used outside of
+// __attribute__((__ifunc__())).
+#if defined(HAVE_FUNC_ATTRIBUTE_IFUNC) && defined(__clang__)
+#      pragma GCC diagnostic push
+#      pragma GCC diagnostic ignored "-Wunused-function"
+#endif
 
 static crc64_func_type
 crc64_resolve(void)
@@ -448,6 +455,9 @@ crc64_resolve(void)
        return is_clmul_supported() ? &crc64_clmul : &crc64_generic;
 }
 
+#if defined(HAVE_FUNC_ATTRIBUTE_IFUNC) && defined(__clang__)
+#      pragma GCC diagnostic pop
+#endif
 
 #ifndef HAVE_FUNC_ATTRIBUTE_IFUNC