diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-06-18 09:46:01 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-06-18 09:46:01 +0000 |
commit | 1a6a65f16bb8f9f8035dc8d4689ec0b6032047d0 (patch) | |
tree | 7c4a486219dc84f02865e2da98c7d943185c3ffa /include | |
parent | ca7bdc882bab78fffc91244496fd2c797018d881 (diff) | |
download | ruby-1a6a65f16bb8f9f8035dc8d4689ec0b6032047d0.tar.gz |
* configure.in: Check __int128.
* include/ruby/defines.h (BDIGIT_DBL): Use uint128_t if it is available.
(BDIGIT): Use uint64_t if uint128_t is available.
(SIZEOF_BDIGITS): Defined for above case.
(BDIGIT_DBL_SIGNED): Ditto.
(PRI_BDIGIT_PREFIX): Ditto.
* include/ruby/ruby.h (PRI_64_PREFIX): Defined.
* bignum.c (rb_big_pow): Don't use BITSPERDIG for the condition which
rb_big_pow returns Float or Bignum.
[ruby-dev:47413] [Feature #8509]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41379 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'include')
-rw-r--r-- | include/ruby/defines.h | 8 | ||||
-rw-r--r-- | include/ruby/ruby.h | 6 |
2 files changed, 13 insertions, 1 deletions
diff --git a/include/ruby/defines.h b/include/ruby/defines.h index 9b75647e64..0c6b2300fc 100644 --- a/include/ruby/defines.h +++ b/include/ruby/defines.h @@ -141,7 +141,13 @@ void xfree(void*); # define SIZEOF_LONG_LONG SIZEOF___INT64 #endif -#if SIZEOF_INT*2 <= SIZEOF_LONG_LONG +#if defined(HAVE_INT64_T) && defined(HAVE_INT128_T) +# define BDIGIT uint64_t +# define SIZEOF_BDIGITS SIZEOF_INT64_T +# define BDIGIT_DBL uint128_t +# define BDIGIT_DBL_SIGNED int128_t +# define PRI_BDIGIT_PREFIX PRI_64_PREFIX +#elif SIZEOF_INT*2 <= SIZEOF_LONG_LONG # define BDIGIT unsigned int # define SIZEOF_BDIGITS SIZEOF_INT # define BDIGIT_DBL unsigned LONG_LONG diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h index df5209f0bb..6d82afbc0e 100644 --- a/include/ruby/ruby.h +++ b/include/ruby/ruby.h @@ -115,6 +115,12 @@ typedef char ruby_check_sizeof_voidp[SIZEOF_VOIDP == sizeof(void*) ? 1 : -1]; #define PRI_LONG_PREFIX "l" #endif +#if SIZEOF_LONG == 8 +#define PRI_64_PREFIX PRI_LONG_PREFIX +#elif SIZEOF_LONG_LONG == 8 +#define PRI_64_PREFIX PRI_LL_PREFIX +#endif + #if defined PRIdPTR && !defined PRI_VALUE_PREFIX #define PRIdVALUE PRIdPTR #define PRIoVALUE PRIoPTR |