Skip to content
Snippets Groups Projects
Commit a3878d17 authored by Herbert Valerio Riedel's avatar Herbert Valerio Riedel :man_dancing:
Browse files

Temporary disable `mpz_gmpz_tdiv_qr_ui` to workaround #8661


I still need to investigated, but for some reason not yet obvious to me,
commit [af2ba9c8/integer-gmp] (re #8647) seems to have triggered #8661
on linux/32

This commit disables the use of the `quotRemIntegerWord#` primop on
32bit (which seems to trigger the issue).

Signed-off-by: Herbert Valerio Riedel's avatarHerbert Valerio Riedel <hvr@gnu.org>
parent 868b93be
No related branches found
No related tags found
No related merge requests found
...@@ -221,9 +221,10 @@ Just using smartJ# in this way has good results: ...@@ -221,9 +221,10 @@ Just using smartJ# in this way has good results:
{-# NOINLINE quotRemInteger #-} {-# NOINLINE quotRemInteger #-}
quotRemInteger :: Integer -> Integer -> (# Integer, Integer #) quotRemInteger :: Integer -> Integer -> (# Integer, Integer #)
quotRemInteger (S# INT_MINBOUND) b = quotRemInteger minIntAsBig b quotRemInteger a@(S# INT_MINBOUND) b = quotRemInteger (toBig a) b
quotRemInteger (S# i) (S# j) = case quotRemInt# i j of quotRemInteger (S# i) (S# j) = case quotRemInt# i j of
(# q, r #) -> (# S# q, S# r #) (# q, r #) -> (# S# q, S# r #)
#if SIZEOF_HSWORD == 8
quotRemInteger (J# s1 d1) (S# b) | isTrue# (b <# 0#) quotRemInteger (J# s1 d1) (S# b) | isTrue# (b <# 0#)
= case quotRemIntegerWord# s1 d1 (int2Word# (negateInt# b)) of = case quotRemIntegerWord# s1 d1 (int2Word# (negateInt# b)) of
(# s3, d3, s4, d4 #) -> let !q = smartJ# (negateInt# s3) d3 (# s3, d3, s4, d4 #) -> let !q = smartJ# (negateInt# s3) d3
...@@ -234,6 +235,10 @@ quotRemInteger (J# s1 d1) (S# b) ...@@ -234,6 +235,10 @@ quotRemInteger (J# s1 d1) (S# b)
(# s3, d3, s4, d4 #) -> let !q = smartJ# s3 d3 (# s3, d3, s4, d4 #) -> let !q = smartJ# s3 d3
!r = smartJ# s4 d4 !r = smartJ# s4 d4
in (# q, r #) in (# q, r #)
#else
-- temporary workaround on 32bit due to #8661
quotRemInteger i1@(J# _ _) i2@(S# _) = quotRemInteger i1 (toBig i2)
#endif
quotRemInteger i1@(S# _) i2@(J# _ _) = quotRemInteger (toBig i1) i2 quotRemInteger i1@(S# _) i2@(J# _ _) = quotRemInteger (toBig i1) i2
quotRemInteger (J# s1 d1) (J# s2 d2) quotRemInteger (J# s1 d1) (J# s2 d2)
= case (quotRemInteger# s1 d1 s2 d2) of = case (quotRemInteger# s1 d1 s2 d2) of
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment