Check for bswap* builtins before using
Canonical builtin checks for clang are to use __has_builtin. Much less fragile than version checks. https://code.google.com/p/webm/issues/detail?id=1082 Change-Id: I8151fb75899acdf1a935c23aad9441da99a9abcd
This commit is contained in:
parent
ec623a0bb7
commit
5d5cc0d082
@ -25,14 +25,10 @@
|
||||
# define LOCAL_GCC_PREREQ(maj, min) 0
|
||||
#endif
|
||||
|
||||
#ifdef __clang__
|
||||
# define LOCAL_CLANG_VERSION ((__clang_major__ << 8) | __clang_minor__)
|
||||
# define LOCAL_CLANG_PREREQ(maj, min) \
|
||||
(LOCAL_CLANG_VERSION >= (((maj) << 8) | (min)))
|
||||
#else
|
||||
# define LOCAL_CLANG_VERSION 0
|
||||
# define LOCAL_CLANG_PREREQ(maj, min) 0
|
||||
#endif // __clang__
|
||||
// handle clang compatibility
|
||||
#ifndef __has_builtin
|
||||
# define __has_builtin(x) 0
|
||||
#endif
|
||||
|
||||
// some endian fix (e.g.: mips-gcc doesn't define __BIG_ENDIAN__)
|
||||
#if !defined(WORDS_BIGENDIAN) && \
|
||||
@ -53,16 +49,18 @@
|
||||
#define HToBE32(X) BSwap32(X)
|
||||
#endif
|
||||
|
||||
// clang-3.3 and gcc-4.3 have builtin functions for swap32/swap64
|
||||
#if LOCAL_GCC_PREREQ(4, 3) || LOCAL_CLANG_PREREQ(3, 3)
|
||||
#define HAVE_BUILTIN_BSWAP32
|
||||
#define HAVE_BUILTIN_BSWAP64
|
||||
#endif
|
||||
// clang-3.3 and gcc-4.8 have a builtin function for swap16
|
||||
#if LOCAL_GCC_PREREQ(4, 8) || LOCAL_CLANG_PREREQ(3, 3)
|
||||
#if LOCAL_GCC_PREREQ(4, 8) || __has_builtin(__builtin_bswap16)
|
||||
#define HAVE_BUILTIN_BSWAP16
|
||||
#endif
|
||||
|
||||
#if LOCAL_GCC_PREREQ(4, 3) || __has_builtin(__builtin_bswap32)
|
||||
#define HAVE_BUILTIN_BSWAP32
|
||||
#endif
|
||||
|
||||
#if LOCAL_GCC_PREREQ(4, 3) || __has_builtin(__builtin_bswap64)
|
||||
#define HAVE_BUILTIN_BSWAP64
|
||||
#endif
|
||||
|
||||
#if HAVE_MIPS32 && defined(__mips__) && !defined(__mips64) && \
|
||||
defined(__mips_isa_rev) && (__mips_isa_rev >= 2) && (__mips_isa_rev < 6)
|
||||
#define VPX_USE_MIPS32_R2
|
||||
|
Loading…
Reference in New Issue
Block a user