mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-05-21 12:18:28 +00:00
Correctly check for bswap builtins before using
The __clang_major__ and __clang_minor__ macros provide a marketing version, which is not necessarily comparable for clang distributions from different vendors[1]. In practice, the versioning scheme for Apple's clang is indeed completely different to that of the llvm.org releases. It is thus preferable to check for features directly rather than comparing versions. In this specific case, __builtin_bswap16 was being used with older Apple clang versions that don't support it. [1] https://clang.llvm.org/docs/LanguageExtensions.html#builtin-macros
This commit is contained in:
parent
7aec0b90ee
commit
9bf6557585
2 changed files with 14 additions and 3 deletions
|
@ -91,7 +91,7 @@ extern "C" {
|
|||
/**
|
||||
* \file SDL_endian.h
|
||||
*/
|
||||
#if (defined(__clang__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 2))) || \
|
||||
#if (_SDL_HAS_BUILTIN(__builtin_bswap16)) || \
|
||||
(defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)))
|
||||
#define SDL_Swap16(x) __builtin_bswap16(x)
|
||||
#elif defined(__GNUC__) && defined(__i386__) && \
|
||||
|
@ -149,7 +149,7 @@ SDL_Swap16(Uint16 x)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if (defined(__clang__) && (__clang_major__ > 2 || (__clang_major__ == 2 && __clang_minor__ >= 6))) || \
|
||||
#if (_SDL_HAS_BUILTIN(__builtin_bswap32)) || \
|
||||
(defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)))
|
||||
#define SDL_Swap32(x) __builtin_bswap32(x)
|
||||
#elif defined(__GNUC__) && defined(__i386__) && \
|
||||
|
@ -210,7 +210,7 @@ SDL_Swap32(Uint32 x)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if (defined(__clang__) && (__clang_major__ > 2 || (__clang_major__ == 2 && __clang_minor__ >= 6))) || \
|
||||
#if (_SDL_HAS_BUILTIN(__builtin_bswap64)) || \
|
||||
(defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)))
|
||||
#define SDL_Swap64(x) __builtin_bswap64(x)
|
||||
#elif defined(__GNUC__) && defined(__i386__) && \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue