From 525e8c5770c433c7ca989e12bdf338939b3ebb2b Mon Sep 17 00:00:00 2001 From: "Philipp A. Hartmann" Date: Wed, 1 Apr 2015 22:39:26 +0200 Subject: [PATCH] biginteger/diyfp: mark __int128 as extension on GCC --- include/rapidjson/internal/biginteger.h | 3 ++- include/rapidjson/internal/diyfp.h | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/rapidjson/internal/biginteger.h b/include/rapidjson/internal/biginteger.h index 3e97920..5719a2a 100755 --- a/include/rapidjson/internal/biginteger.h +++ b/include/rapidjson/internal/biginteger.h @@ -252,7 +252,8 @@ private: (*outHigh)++; return low; #elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__x86_64__) - unsigned __int128 p = static_cast(a) * static_cast(b); + __extension__ typedef unsigned __int128 uint128; + uint128 p = static_cast(a) * static_cast(b); p += k; *outHigh = p >> 64; return static_cast(p); diff --git a/include/rapidjson/internal/diyfp.h b/include/rapidjson/internal/diyfp.h index 174b9fa..1b36f66 100644 --- a/include/rapidjson/internal/diyfp.h +++ b/include/rapidjson/internal/diyfp.h @@ -75,7 +75,8 @@ struct DiyFp { h++; return DiyFp(h, e + rhs.e + 64); #elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__x86_64__) - unsigned __int128 p = static_cast(f) * static_cast(rhs.f); + __extension__ typedef unsigned __int128 uint128; + uint128 p = static_cast(f) * static_cast(rhs.f); uint64_t h = p >> 64; uint64_t l = static_cast(p); if (l & (uint64_t(1) << 63)) // rounding