mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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 <bircoph@altlinux.org> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61471 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
135f24c06a
commit
8880af9a3b
1 changed files with 1 additions and 1 deletions
2
hash.c
2
hash.c
|
@ -230,7 +230,7 @@ static const uint64_t prime2 = ((uint64_t)0xcdb32970 << 32) | 0x830fcaa1;
|
||||||
static inline uint64_t
|
static inline uint64_t
|
||||||
mult_and_mix(uint64_t m1, uint64_t m2)
|
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;
|
__uint128_t r = (__uint128_t) m1 * (__uint128_t) m2;
|
||||||
return (uint64_t) (r >> 64) ^ (uint64_t) r;
|
return (uint64_t) (r >> 64) ^ (uint64_t) r;
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Add table
Reference in a new issue