From 066b5c0e0d77a24181893bbbf679d96f6a61a960 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Fri, 7 Oct 2016 14:46:05 +0000 Subject: [PATCH] added _uint128_t check --- configure | 40 ++++++++++++++++++++++++++++++++++++++++ configure.ac | 3 +++ lib/hcl-cfg.h.in | 6 ++++++ lib/hcl-cmn.h | 5 ++++- 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 7808346..147d073 100755 --- a/configure +++ b/configure @@ -17611,6 +17611,40 @@ cat >>confdefs.h <<_ACEOF _ACEOF +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of __uint128_t" >&5 +$as_echo_n "checking size of __uint128_t... " >&6; } +if ${ac_cv_sizeof___uint128_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (__uint128_t))" "ac_cv_sizeof___uint128_t" " +"; then : + +else + if test "$ac_cv_type___uint128_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (__uint128_t) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof___uint128_t=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof___uint128_t" >&5 +$as_echo "$ac_cv_sizeof___uint128_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF___UINT128_T $ac_cv_sizeof___uint128_t +_ACEOF + + # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. @@ -17975,6 +18009,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ac_cv_sizeof___int128_t=0 + ac_cv_sizeof___uint128_t=0 fi @@ -18194,6 +18229,11 @@ cat >>confdefs.h <<_ACEOF _ACEOF +cat >>confdefs.h <<_ACEOF +#define HCL_SIZEOF___UINT128_T ${ac_cv_sizeof___uint128_t} +_ACEOF + + cat >>confdefs.h <<_ACEOF #define HCL_SIZEOF_VOID_P ${ac_cv_sizeof_void_p} _ACEOF diff --git a/configure.ac b/configure.ac index cb8c8a0..481e7de 100644 --- a/configure.ac +++ b/configure.ac @@ -189,6 +189,7 @@ AC_CHECK_SIZEOF(__int16_t,,[[]]) AC_CHECK_SIZEOF(__int32_t,,[[]]) AC_CHECK_SIZEOF(__int64_t,,[[]]) AC_CHECK_SIZEOF(__int128_t,,[[]]) +AC_CHECK_SIZEOF(__uint128_t,,[[]]) dnl AC_CHECK_SIZEOF doesn't work without white-space between void and * AC_CHECK_SIZEOF(void *,,[[]]) AC_CHECK_SIZEOF(float,,[[]]) @@ -231,6 +232,7 @@ then [ AC_MSG_RESULT(no) ac_cv_sizeof___int128_t=0 + ac_cv_sizeof___uint128_t=0 ] ) fi @@ -315,6 +317,7 @@ AC_DEFINE_UNQUOTED(HCL_SIZEOF___INT32, ${ac_cv_sizeof___int32}, [sizeof(__int32) AC_DEFINE_UNQUOTED(HCL_SIZEOF___INT64, ${ac_cv_sizeof___int64}, [sizeof(__int64)]) AC_DEFINE_UNQUOTED(HCL_SIZEOF___INT128, ${ac_cv_sizeof___int128}, [sizeof(__int128)]) AC_DEFINE_UNQUOTED(HCL_SIZEOF___INT128_T, ${ac_cv_sizeof___int128_t}, [sizeof(__int128_t)]) +AC_DEFINE_UNQUOTED(HCL_SIZEOF___UINT128_T, ${ac_cv_sizeof___uint128_t}, [sizeof(__uint128_t)]) AC_DEFINE_UNQUOTED(HCL_SIZEOF_VOID_P, ${ac_cv_sizeof_void_p}, [sizeof(void*)]) AC_DEFINE_UNQUOTED(HCL_SIZEOF_FLOAT, ${ac_cv_sizeof_float}, [sizeof(float)]) AC_DEFINE_UNQUOTED(HCL_SIZEOF_DOUBLE, ${ac_cv_sizeof_double}, [sizeof(double)]) diff --git a/lib/hcl-cfg.h.in b/lib/hcl-cfg.h.in index fa63888..43e25d6 100644 --- a/lib/hcl-cfg.h.in +++ b/lib/hcl-cfg.h.in @@ -294,6 +294,9 @@ /* sizeof(__int8) */ #undef HCL_SIZEOF___INT8 +/* sizeof(__uint128_t) */ +#undef HCL_SIZEOF___UINT128_T + /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR @@ -394,6 +397,9 @@ /* The size of `__int8_t', as computed by sizeof. */ #undef SIZEOF___INT8_T +/* The size of `__uint128_t', as computed by sizeof. */ +#undef SIZEOF___UINT128_T + /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS diff --git a/lib/hcl-cmn.h b/lib/hcl-cmn.h index 9eb1619..ecb67ed 100644 --- a/lib/hcl-cmn.h +++ b/lib/hcl-cmn.h @@ -197,7 +197,10 @@ #elif defined(HCL_SIZEOF___INT128_T) && (HCL_SIZEOF___INT128_T == 16) # define HCL_HAVE_UINT128_T # define HCL_HAVE_INT128_T - #if defined(__clang__) + #if defined(HCL_SIZEOF___UINT128_T) && (HCL_SIZEOF___UINT128_T == HCL_SIZEOF___INT128_T) + typedef __uint128_t hcl_uint128_t; + typedef __int128_t hcl_int128_t; + #elif defined(__clang__) typedef __uint128_t hcl_uint128_t; typedef __int128_t hcl_int128_t; #else