1
0
Fork 0
mirror of https://git.tukaani.org/xz.git synced 2024-04-04 12:36:23 +02:00

liblzma: CRC: Remove crc_always_inline, use lzma_always_inline instead.

Now crc_simd_body() in crc_x86_clmul.h is only called once
in a translation unit, we no longer need to be so cautious
about ensuring the always-inline behavior.
This commit is contained in:
Lasse Collin 2024-01-11 15:22:36 +02:00
parent 35c03ec6bf
commit 4f518c1b6b
2 changed files with 1 additions and 21 deletions

View file

@ -49,26 +49,6 @@
#endif #endif
// The inline keyword is only a suggestion to the compiler to substitute the
// body of the function into the places where it is called. If a function
// is large and called multiple times then compiler may choose to ignore the
// inline suggestion at a sometimes high performance cost.
//
// MSVC's __forceinline is a keyword that should be used in place of inline.
// If both __forceinline and inline are used, MSVC will issue a warning.
// Since MSVC's keyword is a replacement keyword, the lzma_always_inline
// macro must also contain the inline keyword when its not used in MSVC.
//
// NOTE: This doesn't use lzma_always_inline for now as support for it is
// detected using preprocessor macros which might miss a compiler that
// does support it. All compilers that support the CLMUL code support
// the attribute too; if not, we will hopefully get a bug report.
#ifdef _MSC_VER
# define crc_always_inline __forceinline
#else
# define crc_always_inline __attribute__((__always_inline__)) inline
#endif
#undef CRC_GENERIC #undef CRC_GENERIC
#undef CRC_ARCH_OPTIMIZED #undef CRC_ARCH_OPTIMIZED
#undef CRC_X86_CLMUL #undef CRC_X86_CLMUL

View file

@ -66,7 +66,7 @@
crc_attr_target crc_attr_target
crc_attr_no_sanitize_address crc_attr_no_sanitize_address
static crc_always_inline void static lzma_always_inline void
crc_simd_body(const uint8_t *buf, const size_t size, __m128i *v0, __m128i *v1, crc_simd_body(const uint8_t *buf, const size_t size, __m128i *v0, __m128i *v1,
const __m128i vfold16, const __m128i initial_crc) const __m128i vfold16, const __m128i initial_crc)
{ {