diff options
author | lhchavez <lhchavez@lhchavez.com> | 2019-01-08 17:35:16 -0800 |
---|---|---|
committer | lhchavez <lhchavez@lhchavez.com> | 2019-01-08 17:35:16 -0800 |
commit | 728101e3c53e84e87c0cb4776b8f5978cfded94a (patch) | |
tree | 6438d90a46c79401bb9082bd7d4c41efbf794d19 | |
parent | 321d19c1058fc10cb9deabccf99557ec5642a2e3 (diff) | |
download | libgit2-728101e3c53e84e87c0cb4776b8f5978cfded94a.tar.gz |
Move the intrinsics part of the change to its own PR
Less controversial changes together is better.
-rw-r--r-- | src/integer.h | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/src/integer.h b/src/integer.h index a10ee992a..30528db59 100644 --- a/src/integer.h +++ b/src/integer.h @@ -55,26 +55,16 @@ GIT_INLINE(bool) git__add_uint64_overflow(uint64_t *out, uint64_t one, uint64_t } /* Use clang/gcc compiler intrinsics whenever possible */ -#if (__has_builtin(__builtin_add_overflow) || \ - (defined(__GNUC__) && (__GNUC__ >= 5))) - -# if (ULONG_MAX == ULLONG_MAX) && defined(_WIN64) -# define git__add_sizet_overflow(out, one, two) \ - __builtin_uaddll_overflow(one, two, out) -# define git__multiply_sizet_overflow(out, one, two) \ - __builtin_umulll_overflow(one, two, out) -# elif (ULONG_MAX == ULLONG_MAX) -# define git__add_sizet_overflow(out, one, two) \ - __builtin_uaddl_overflow(one, two, out) -# define git__multiply_sizet_overflow(out, one, two) \ - __builtin_umull_overflow(one, two, out) -# else -# define git__add_sizet_overflow(out, one, two) \ - __builtin_add_overflow(one, two, out) -# define git__multiply_sizet_overflow(out, one, two) \ - __builtin_mul_overflow(one, two, out) -# endif - +#if (SIZE_MAX == ULONG_MAX) && __has_builtin(__builtin_uaddl_overflow) +# define git__add_sizet_overflow(out, one, two) \ + __builtin_uaddl_overflow(one, two, out) +# define git__multiply_sizet_overflow(out, one, two) \ + __builtin_umull_overflow(one, two, out) +#elif (SIZE_MAX == UINT_MAX) && __has_builtin(__builtin_uadd_overflow) +# define git__add_sizet_overflow(out, one, two) \ + __builtin_uadd_overflow(one, two, out) +# define git__multiply_sizet_overflow(out, one, two) \ + __builtin_umul_overflow(one, two, out) #else /** |