liblzma: #define lzma_always_inline in common.h.

(cherry picked from commit 6cdf0a7b79)
This commit is contained in:
Lasse Collin 2023-10-30 17:43:03 +02:00
parent 47b3d2761e
commit ce8d257cbb
1 changed files with 17 additions and 0 deletions

View File

@ -98,6 +98,23 @@
# endif # endif
#endif #endif
// MSVC has __forceinline which shouldn't be combined with the inline keyword
// (results in a warning).
//
// GCC 3.1 added always_inline attribute so we don't need to check
// for __GNUC__ version. Similarly, all relevant Clang versions
// support it (at least Clang 3.0.0 does already).
// Other compilers might support too which also support __has_attribute
// (Solaris Studio) so do that check too.
#if defined(_MSC_VER)
# define lzma_always_inline __forceinline
#elif defined(__GNUC__) || defined(__clang__) || defined(__INTEL_COMPILER) \
|| lzma_has_attribute(__always_inline__)
# define lzma_always_inline inline __attribute__((__always_inline__))
#else
# define lzma_always_inline inline
#endif
// These allow helping the compiler in some often-executed branches, whose // These allow helping the compiler in some often-executed branches, whose
// result is almost always the same. // result is almost always the same.
#ifdef __GNUC__ #ifdef __GNUC__