path: root/hash.c
diff options
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-25 12:32:09 (GMT)
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-25 12:32:09 (GMT)
commit8880af9a3b5b8d44616c68c552ec271cc59a054f (patch)
treecead0b83082fb9c127abbaa5bd82233588606759 /hash.c
parent135f24c06a2ea179f10a44a8063b9406b25e5c55 (diff)
Use UINT128_T support flag from configure
Current check for __uint128_t in hash.c is not valid, since it ignores compilers other than gcc. We hit this on lcc on e2k platform. Configure script properly checks from 128-bit data types support and sets HAVE_UINT128_T accordingly. This approach is already used within ruby at bignum.c, random.c, etc. Probably hash.c is an overlooked remnant of old days. This patch fixes this. [ruby-core:84438] [Bug #14231] [Fix GH-1781] From: Andrew Savchenko <> git-svn-id: svn+ssh:// b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'hash.c')
1 files changed, 1 insertions, 1 deletions
diff --git a/hash.c b/hash.c
index 1bbb6b1..93f1685 100644
--- a/hash.c
+++ b/hash.c
@@ -230,7 +230,7 @@ static const uint64_t prime2 = ((uint64_t)0xcdb32970 << 32) | 0x830fcaa1;
static inline uint64_t
mult_and_mix(uint64_t m1, uint64_t m2)
-#if defined(__GNUC__) && UINT_MAX != ULONG_MAX
+#if defined HAVE_UINT128_T
__uint128_t r = (__uint128_t) m1 * (__uint128_t) m2;
return (uint64_t) (r >> 64) ^ (uint64_t) r;