diff options
author | Jeremy Evans <[email protected]> | 2023-08-24 13:44:03 -0700 |
---|---|---|
committer | Jeremy Evans <[email protected]> | 2023-08-24 20:47:23 -0700 |
commit | b635388a900206b673fc23b5442345236b84cd75 (patch) | |
tree | 5f18e621d30b506392c0bea9eae79eea1513ecbc /internal/bits.h | |
parent | 945e79c99633ab1beb061cea1217c83399777d4e (diff) |
Check that __builtin_mul_overflow can handle long long
Fixes [Bug #17646]
Patch from xtkoba (Tee KOBAYASHI)
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/8288
Diffstat (limited to 'internal/bits.h')
-rw-r--r-- | internal/bits.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/internal/bits.h b/internal/bits.h index 6248e4cfa9..538e6c11ae 100644 --- a/internal/bits.h +++ b/internal/bits.h @@ -118,12 +118,16 @@ MUL_OVERFLOW_SIGNED_INTEGER_P(a, b, FIXNUM_MIN, FIXNUM_MAX) #endif -#ifdef MUL_OVERFLOW_P +#if defined(MUL_OVERFLOW_P) && defined(USE___BUILTIN_MUL_OVERFLOW_LONG_LONG) # define MUL_OVERFLOW_LONG_LONG_P(a, b) MUL_OVERFLOW_P(a, b) +#else +# define MUL_OVERFLOW_LONG_LONG_P(a, b) MUL_OVERFLOW_SIGNED_INTEGER_P(a, b, LLONG_MIN, LLONG_MAX) +#endif + +#ifdef MUL_OVERFLOW_P # define MUL_OVERFLOW_LONG_P(a, b) MUL_OVERFLOW_P(a, b) # define MUL_OVERFLOW_INT_P(a, b) MUL_OVERFLOW_P(a, b) #else -# define MUL_OVERFLOW_LONG_LONG_P(a, b) MUL_OVERFLOW_SIGNED_INTEGER_P(a, b, LLONG_MIN, LLONG_MAX) # define MUL_OVERFLOW_LONG_P(a, b) MUL_OVERFLOW_SIGNED_INTEGER_P(a, b, LONG_MIN, LONG_MAX) # define MUL_OVERFLOW_INT_P(a, b) MUL_OVERFLOW_SIGNED_INTEGER_P(a, b, INT_MIN, INT_MAX) #endif |