ruby-changes:50696
From: nagachika <ko1@a...>
Date: Tue, 20 Mar 2018 22:52:12 +0900 (JST)
Subject: [ruby-changes:50696] nagachika:r62863 (ruby_2_4): merge revision(s) 61471, 61472: [Backport #14231]
nagachika 2018-03-20 22:52:06 +0900 (Tue, 20 Mar 2018) New Revision: 62863 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=62863 Log: 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@a...> 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@r...> Modified directories: branches/ruby_2_4/ Modified files: branches/ruby_2_4/hash.c branches/ruby_2_4/version.h Index: ruby_2_4/hash.c =================================================================== --- ruby_2_4/hash.c (revision 62862) +++ ruby_2_4/hash.c (revision 62863) @@ -235,8 +235,8 @@ static const uint64_t prime2 = ((uint64_ https://github.com/ruby/ruby/blob/trunk/ruby_2_4/hash.c#L235 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; Index: ruby_2_4/version.h =================================================================== --- ruby_2_4/version.h (revision 62862) +++ ruby_2_4/version.h (revision 62863) @@ -1,6 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_4/version.h#L1 #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 Index: ruby_2_4 =================================================================== --- ruby_2_4 (revision 62862) +++ ruby_2_4 (revision 62863) Property changes on: ruby_2_4 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /trunk:r61471-61472 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/