Skip to content

Commit ff98e20

Browse files
committed
lib/crc32.c: mark crc32_le_base/__crc32c_le_base aliases as __pure
The upcoming GCC 9 release extends the -Wmissing-attributes warnings (enabled by -Wall) to C and aliases: it warns when particular function attributes are missing in the aliases but not in their target. In particular, it triggers here because crc32_le_base/__crc32c_le_base aren't __pure while their target crc32_le/__crc32c_le are. These aliases are used by architectures as a fallback in accelerated versions of CRC32. See commit 9784d82 ("lib/crc32: make core crc32() routines weak so they can be overridden"). Therefore, being fallbacks, it is likely that even if the aliases were called from C, there wouldn't be any optimizations possible. Currently, the only user is arm64, which calls this from asm. Still, marking the aliases as __pure makes sense and is a good idea for documentation purposes and possible future optimizations, which also silences the warning. Acked-by: Ard Biesheuvel <[email protected]> Tested-by: Laura Abbott <[email protected]> Signed-off-by: Miguel Ojeda <[email protected]>
1 parent 8834f56 commit ff98e20

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

lib/crc32.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,8 @@ u32 __pure __weak __crc32c_le(u32 crc, unsigned char const *p, size_t len)
206206
EXPORT_SYMBOL(crc32_le);
207207
EXPORT_SYMBOL(__crc32c_le);
208208

209-
u32 crc32_le_base(u32, unsigned char const *, size_t) __alias(crc32_le);
210-
u32 __crc32c_le_base(u32, unsigned char const *, size_t) __alias(__crc32c_le);
209+
u32 __pure crc32_le_base(u32, unsigned char const *, size_t) __alias(crc32_le);
210+
u32 __pure __crc32c_le_base(u32, unsigned char const *, size_t) __alias(__crc32c_le);
211211

212212
/*
213213
* This multiplies the polynomials x and y modulo the given modulus.

0 commit comments

Comments
 (0)