summaryrefslogtreecommitdiffstats
path: root/contrib/t1ha
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/t1ha')
-rw-r--r--contrib/t1ha/t1ha.h19
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)