1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

merge revision(s) 61471,61472: [Backport #14231]

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>

	hash.c: use uint128_t

	* hash.c (mult_and_mix): use uint128_t instead of __uint128_t.
	  [ruby-core:84438] [Bug #14231]

	From: Nobuyoshi Nakada <nobu@ruby-lang.org>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@62863 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nagachika 2018-03-20 13:52:06 +00:00
parent 01fcd07bff
commit c0848eeda4
2 changed files with 3 additions and 3 deletions

4
hash.c
View file

@ -235,8 +235,8 @@ 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
__uint128_t r = (__uint128_t) m1 * (__uint128_t) m2;
#if defined HAVE_UINT128_T
uint128_t r = (uint128_t) m1 * (uint128_t) m2;
return (uint64_t) (r >> 64) ^ (uint64_t) r;
#else
uint64_t hm1 = m1 >> 32, hm2 = m2 >> 32;

View file

@ -1,6 +1,6 @@
#define RUBY_VERSION "2.4.4"
#define RUBY_RELEASE_DATE "2018-03-20"
#define RUBY_PATCHLEVEL 271
#define RUBY_PATCHLEVEL 272
#define RUBY_RELEASE_YEAR 2018
#define RUBY_RELEASE_MONTH 3