diff options
-rw-r--r-- | libraries/integer-gmp/cbits/float.c | 11 | ||||
-rw-r--r-- | libraries/integer-gmp/cbits/gmp-wrappers.cmm | 4 | ||||
-rw-r--r-- | libraries/integer-gmp/mkGmpDerivedConstants/mkGmpDerivedConstants.c | 1 |
3 files changed, 7 insertions, 9 deletions
diff --git a/libraries/integer-gmp/cbits/float.c b/libraries/integer-gmp/cbits/float.c index ec2ec13432..73a89f577a 100644 --- a/libraries/integer-gmp/cbits/float.c +++ b/libraries/integer-gmp/cbits/float.c @@ -11,6 +11,7 @@ /* #include "PosixSource.h" */ #include "Rts.h" #include "gmp.h" +#include "GmpDerivedConstants.h" #include <math.h> @@ -21,15 +22,7 @@ * (lib/fltcode.c). */ -#ifdef _SHORT_LIMB -#define SIZEOF_LIMB_T SIZEOF_UNSIGNED_INT -#else -#ifdef _LONG_LONG_LIMB -#define SIZEOF_LIMB_T SIZEOF_UNSIGNED_LONG_LONG -#else -#define SIZEOF_LIMB_T SIZEOF_UNSIGNED_LONG -#endif -#endif +#define SIZEOF_LIMB_T SIZEOF_MP_LIMB_T #if SIZEOF_LIMB_T == 4 #define GMP_BASE 4294967296.0 diff --git a/libraries/integer-gmp/cbits/gmp-wrappers.cmm b/libraries/integer-gmp/cbits/gmp-wrappers.cmm index eb555fd382..4c7df574e7 100644 --- a/libraries/integer-gmp/cbits/gmp-wrappers.cmm +++ b/libraries/integer-gmp/cbits/gmp-wrappers.cmm @@ -80,6 +80,10 @@ import "rts" stg_INTLIKE_closure; the case for all the platforms that GHC supports, currently. -------------------------------------------------------------------------- */ +#if SIZEOF_MP_LIMB_T != SIZEOF_W +#error "sizeof(mp_limb_t) != sizeof(W_)" +#endif + /* This is used when a dummy pointer is needed for a ByteArray# return value Ideally this would be a statically allocated 'ByteArray#' diff --git a/libraries/integer-gmp/mkGmpDerivedConstants/mkGmpDerivedConstants.c b/libraries/integer-gmp/mkGmpDerivedConstants/mkGmpDerivedConstants.c index ed07111e06..fb7290f682 100644 --- a/libraries/integer-gmp/mkGmpDerivedConstants/mkGmpDerivedConstants.c +++ b/libraries/integer-gmp/mkGmpDerivedConstants/mkGmpDerivedConstants.c @@ -69,6 +69,7 @@ main(int argc, char *argv[]) struct_field(MP_INT,_mp_alloc); struct_field(MP_INT,_mp_size); struct_field(MP_INT,_mp_d); + def_size("MP_LIMB_T", sizeof(mp_limb_t)); return 0; } |