diff options
Diffstat (limited to 'contrib/t1ha')
-rw-r--r-- | contrib/t1ha/t1ha.h | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/contrib/t1ha/t1ha.h b/contrib/t1ha/t1ha.h index 7c97fee90..85deb8971 100644 --- a/contrib/t1ha/t1ha.h +++ b/contrib/t1ha/t1ha.h @@ -88,9 +88,19 @@ #endif #endif -#if defined(__GNUC__) && (__GNUC__ > 3) +#ifndef __GNUC_PREREQ +#if defined(__GNUC__) && defined(__GNUC_MINOR__) +#define __GNUC_PREREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +#else +#define __GNUC_PREREQ(maj, min) 0 +#endif +#endif + -#if defined(__i386) || defined(__x86_64) +#if __GNUC_PREREQ(4, 4) || defined(__clang__) + +#if defined(__i386__) || defined(__x86_64__) #include <x86intrin.h> #endif #define likely(cond) __builtin_expect(!!(cond), 1) @@ -98,7 +108,12 @@ #define unreachable() __builtin_unreachable() #define bswap64(v) __builtin_bswap64(v) #define bswap32(v) __builtin_bswap32(v) +#if __GNUC_PREREQ(4, 8) || __has_builtin(__builtin_bswap16) #define bswap16(v) __builtin_bswap16(v) +#endif +#if __GNUC_PREREQ(4, 3) || __has_attribute(unused) +#define maybe_unused __attribute__((unused)) +#endif #elif defined(_MSC_VER) |