common: fix usage of __has_builtin for old GCC releases

This commit is contained in:
Alibek Omarov 2022-06-29 03:50:50 +03:00
parent ac9664c7ae
commit 5d4f8373c4
1 changed files with 15 additions and 9 deletions

View File

@ -87,15 +87,21 @@ typedef uint64_t longtime_t;
#define NORETURN
#endif
#if defined(__has_builtin)
#if __has_builtin(__builtin_expect)
#define unlikely(x) __builtin_expect(x, 0)
#define likely(x) __builtin_expect(x, 1)
#else // __has_builtin(__builtin_expect)
#define unlikely(x) (x)
#define likely(x) (x)
#endif // __has_builtin(__builtin_expect)
#endif // defined(__has_builtin)
#if ( __GNUC__ >= 3 )
#define unlikely(x) __builtin_expect(x, 0)
#define likely(x) __builtin_expect(x, 1)
#elif defined( __has_builtin )
#if __has_builtin( __builtin_expect )
#define unlikely(x) __builtin_expect(x, 0)
#define likely(x) __builtin_expect(x, 1)
#else
#define unlikely(x) (x)
#define likely(x) (x)
#endif
#else
#define unlikely(x) (x)
#define likely(x) (x)
#endif
#ifdef XASH_BIG_ENDIAN