summaryrefslogtreecommitdiff
path: root/compiler/GHC/StgToByteCode.hs
diff options
context:
space:
mode:
authorSylvain Henry <sylvain@haskus.fr>2021-08-12 17:44:15 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-09-11 08:54:29 -0400
commit089de88ef5215de0f2db4c4babc556ac43f8232e (patch)
treec036813b9625dbb45b4577b09ec6ad31c45c1bce /compiler/GHC/StgToByteCode.hs
parent74a87aa3046f3eb871e5442579e9a2945ef691d4 (diff)
downloadhaskell-089de88ef5215de0f2db4c4babc556ac43f8232e.tar.gz
Canonicalize bignum literals
Before this patch Integer and Natural literals were desugared into "real" Core in Core prep. Now we desugar them directly into their final ConApp form in HsToCore. We only keep the double representation for BigNat# (literals larger than a machine Word/Int) which are still desugared in Core prep. Using the final form directly allows case-of-known-constructor to fire for bignum literals, fixing #20245. Slight increase (+2.3) in T4801 which is a pathological case with Integer literals. Metric Increase: T4801 T11545
Diffstat (limited to 'compiler/GHC/StgToByteCode.hs')
-rw-r--r--compiler/GHC/StgToByteCode.hs8
1 files changed, 3 insertions, 5 deletions
diff --git a/compiler/GHC/StgToByteCode.hs b/compiler/GHC/StgToByteCode.hs
index 1ba0687a9b..e056dadc2b 100644
--- a/compiler/GHC/StgToByteCode.hs
+++ b/compiler/GHC/StgToByteCode.hs
@@ -1716,11 +1716,9 @@ pushLiteral padded lit =
LitNumWord32 -> code Word32Rep
LitNumInt64 -> code Int64Rep
LitNumWord64 -> code Word64Rep
- -- No LitInteger's or LitNatural's should be left by the time this is
- -- called. CorePrep should have converted them all to a real core
- -- representation.
- LitNumInteger -> panic "pushAtom: LitInteger"
- LitNumNatural -> panic "pushAtom: LitNatural"
+ -- No LitNumBigNat should be left by the time this is called. CorePrep
+ -- should have converted them all to a real core representation.
+ LitNumBigNat -> panic "pushAtom: LitNumBigNat"
-- | Push an atom for constructor (i.e., PACK instruction) onto the stack.
-- This is slightly different to @pushAtom@ due to the fact that we allow