diff options
author | Jia Tan <jiat0218@gmail.com> | 2023-04-19 22:22:16 +0800 |
---|---|---|
committer | Jia Tan <jiat0218@gmail.com> | 2023-04-19 22:22:16 +0800 |
commit | f41df2ac2fed347d3f107f3533e76e000d29c6cb (patch) | |
tree | 2f434efad6e8672a261a31881b64d7969240b4bc /src/liblzma | |
parent | tuklib_integer: Use __builtin_clz() with Clang. (diff) | |
download | xz-f41df2ac2fed347d3f107f3533e76e000d29c6cb.tar.xz |
Windows: Include <intrin.h> when needed.
Legacy Windows did not need to #include <intrin.h> to use the MSVC
intrinsics. Newer versions likely just issue a warning, but the MSVC
documentation says to include the header file for the intrinsics we use.
GCC and Clang can "pretend" to be MSVC on Windows, so extra checks are
needed in tuklib_integer.h to only include <intrin.h> when it will is
actually needed.
Diffstat (limited to 'src/liblzma')
-rw-r--r-- | src/liblzma/common/memcmplen.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/liblzma/common/memcmplen.h b/src/liblzma/common/memcmplen.h index 5372cfa8..db3fff60 100644 --- a/src/liblzma/common/memcmplen.h +++ b/src/liblzma/common/memcmplen.h @@ -19,6 +19,16 @@ # include <immintrin.h> #endif +// Only include <intrin.h> if it is needed. The header is only needed +// on Windows when using an MSVC compatible compiler. The Intel compiler +// can use the intrinsics without the header file. +#if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ + && (defined(_MSC_VER) \ + && defined(_M_X64) \ + && !defined(__INTEL_COMPILER)) +# include <intrin.h> +#endif + /// Find out how many equal bytes the two buffers have. /// |