diff options
author | 卜部昌平 <[email protected]> | 2024-04-25 09:25:15 +0200 |
---|---|---|
committer | 卜部昌平 <[email protected]> | 2024-04-27 21:55:28 +0900 |
commit | bb5a53820703f5e1af886a0c5ca7178aa976be29 (patch) | |
tree | 4e7d416e1c1811cad81e0c7e73db8fde722875b5 /include/ruby/internal/memory.h | |
parent | 9ea77cb3514664fc150515765fb9ede5b2b6ab4c (diff) |
use of stdckdint.h
C23 is going to have this header. The industry is already moving
towards accepting it; OSes and compilers started to implement theirs.
Why not detect its presence and if any, prefer over other ways.
See also:
- https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2683.pdf
- https://reviews.freebsd.org/D41734
- https://reviews.llvm.org/D157331
- https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=8441841a1b985d68245954af1ff023db121b0635
Diffstat (limited to 'include/ruby/internal/memory.h')
-rw-r--r-- | include/ruby/internal/memory.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/include/ruby/internal/memory.h b/include/ruby/internal/memory.h index 3bd54cd6c7..270cc1ac8b 100644 --- a/include/ruby/internal/memory.h +++ b/include/ruby/internal/memory.h @@ -56,6 +56,7 @@ #include "ruby/internal/has/builtin.h" #include "ruby/internal/stdalign.h" #include "ruby/internal/stdbool.h" +#include "ruby/internal/stdckdint.h" #include "ruby/internal/xmalloc.h" #include "ruby/backward/2/limits.h" #include "ruby/backward/2/long_long.h" @@ -567,7 +568,10 @@ rbimpl_size_mul_overflow(size_t x, size_t y) { struct rbimpl_size_mul_overflow_tag ret = { false, 0, }; -#if RBIMPL_HAS_BUILTIN(__builtin_mul_overflow) +#if defined(ckd_mul) + ret.left = ckd_mul(&ret.right, x, y); + +#elif RBIMPL_HAS_BUILTIN(__builtin_mul_overflow) ret.left = __builtin_mul_overflow(x, y, &ret.right); #elif defined(DSIZE_T) |