Dont use big/small-int primops on IL32P64 (i.e. Win/x86_64) for now
authorHerbert Valerio Riedel <hvr@gnu.org>
Thu, 16 Jan 2014 21:56:37 +0000 (22:56 +0100)
committerHerbert Valerio Riedel <hvr@gnu.org>
Thu, 16 Jan 2014 23:15:48 +0000 (00:15 +0100)
commit0476327376045838375fbbe4a78c02859a1913cb
treeecf52557349c608dc6e4daba81a282dfb6aa0e97
parentdbb7e640d2856046dd82f134aa3eb6986472f698
Dont use big/small-int primops on IL32P64 (i.e. Win/x86_64) for now

This is due to `mpz_*()` functions having @long@ arguments which are
32bit on IL32P64, whereas `Int#` and `Word#` are 64bit wide, causing all
sorts of malfunction due to truncation.

This affects mostly the new big/small-int primops introduced in the
course of #8647, so when `SIZEOF_W != SIZEOF_LONG` we simply fall back
to using the big/big-int primops. big/small primops implemented via the
low-level `mpn_*()` GMP operations are not affected, as those use
`mp_limb_t` arguments.

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
GHC/Integer/Type.lhs