Fix compilation of `integer-gmp2` with `-O0`
authorHerbert Valerio Riedel <hvr@gnu.org>
Sat, 15 Nov 2014 17:05:58 +0000 (18:05 +0100)
committerHerbert Valerio Riedel <hvr@gnu.org>
Sat, 15 Nov 2014 17:11:17 +0000 (18:11 +0100)
At optimization level `-O0` `wordToInteger` wasn't inlined, and this caused a
`__integer` literal to turn up in final Core, which would trigger the GHC panic

  ghc-stage1: panic! (the 'impossible' happened)
    (GHC version 7.9.20141114 for x86_64-unknown-linux):
Can't use Integer in integer-*

By forcing inlining via `inline` this is avoided.
This should hopefully address #9800.

libraries/integer-gmp2/src/GHC/Integer/Type.hs

index 985d2ae..a143160 100644 (file)
@@ -660,9 +660,9 @@ quotRemInteger (Jn# n)  (Jp# d)  = case quotRemBigNat n d of
     (# q, r #) -> (# bigNatToNegInteger q, bigNatToNegInteger r #)
 quotRemInteger (Jp# n)  (S# d#)
   | isTrue# (d# >=# 0#) = case quotRemBigNatWord n (int2Word# d#) of
-      (# q, r# #) -> (# bigNatToInteger q, wordToInteger r# #)
+      (# q, r# #) -> (# bigNatToInteger q, inline wordToInteger r# #)
   | True               = case quotRemBigNatWord n (int2Word# (negateInt# d#)) of
-      (# q, r# #) -> (# bigNatToNegInteger q, wordToInteger r# #)
+      (# q, r# #) -> (# bigNatToNegInteger q, inline wordToInteger r# #)
 quotRemInteger (Jn# n)  (S# d#)
   | isTrue# (d# >=# 0#) = case quotRemBigNatWord n (int2Word# d#) of
       (# q, r# #) -> (# bigNatToNegInteger q, wordToNegInteger r# #)