Skip to content

Commit

Permalink
Merge branch 'builtin-swap-functions'
Browse files Browse the repository at this point in the history
Do prefer GCC's built-in bit-swap functions.

Signed-off-by: Johannes Schindelin <[email protected]>
  • Loading branch information
dscho authored and Git for Windows Build Agent committed Oct 22, 2024
2 parents d227139 + e7d11ea commit d687cab
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion compat/bswap.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,19 @@ static inline uint64_t default_bswap64(uint64_t val)
#undef bswap32
#undef bswap64

#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
/**
* __has_builtin is available since Clang 10 and GCC 10.
* Below is a fallback for older compilers.
*/
#ifndef __has_builtin
#define __has_builtin(x) 0
#endif

#if __has_builtin(__builtin_bswap32) && __has_builtin(__builtin_bswap64)
#define bswap32(x) __builtin_bswap32((x))
#define bswap64(x) __builtin_bswap64((x))

#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))

#define bswap32 git_bswap32
static inline uint32_t git_bswap32(uint32_t x)
Expand Down

0 comments on commit d687cab

Please sign in to comment.