[commit: ghc] wip/T15548: Use the same UnitId `integer` for `integer-gmp` and `integer-simple` (b7f19d2)
git at git.haskell.org
git at git.haskell.org
Tue Aug 21 05:39:47 UTC 2018
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/T15548
Link : http://ghc.haskell.org/trac/ghc/changeset/b7f19d21f7946c936c238887d91ece17c95b097a/ghc
>---------------------------------------------------------------
commit b7f19d21f7946c936c238887d91ece17c95b097a
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Mon Aug 20 14:44:23 2018 -0700
Use the same UnitId `integer` for `integer-gmp` and `integer-simple`
this makes more code in GHC independent of the choice of the integer
library, which is beneficial for API users, and is a first step towards
fixing #13477.
>---------------------------------------------------------------
b7f19d21f7946c936c238887d91ece17c95b097a
compiler/basicTypes/Module.hs | 6 +-----
compiler/prelude/PrelNames.hs | 18 +++++-------------
libraries/integer-gmp/integer-gmp.cabal | 2 +-
libraries/integer-simple/integer-simple.cabal | 4 ++--
4 files changed, 9 insertions(+), 21 deletions(-)
diff --git a/compiler/basicTypes/Module.hs b/compiler/basicTypes/Module.hs
index 1851496..9809bc6 100644
--- a/compiler/basicTypes/Module.hs
+++ b/compiler/basicTypes/Module.hs
@@ -1067,11 +1067,7 @@ integerUnitId, primUnitId,
baseUnitId, rtsUnitId,
thUnitId, mainUnitId, thisGhcUnitId, interactiveUnitId :: UnitId
primUnitId = fsToUnitId (fsLit "ghc-prim")
-integerUnitId = fsToUnitId (fsLit n)
- where
- n = case cIntegerLibraryType of
- IntegerGMP -> "integer-gmp"
- IntegerSimple -> "integer-simple"
+integerUnitId = fsToUnitId (fsLit "integer")
baseUnitId = fsToUnitId (fsLit "base")
rtsUnitId = fsToUnitId (fsLit "rts")
thUnitId = fsToUnitId (fsLit "template-haskell")
diff --git a/compiler/prelude/PrelNames.hs b/compiler/prelude/PrelNames.hs
index 90f1f44..77afca1 100644
--- a/compiler/prelude/PrelNames.hs
+++ b/compiler/prelude/PrelNames.hs
@@ -136,7 +136,6 @@ import Unique
import Name
import SrcLoc
import FastString
-import Config ( cIntegerLibraryType, IntegerLibrary(..) )
import Panic ( panic )
{-
@@ -355,6 +354,7 @@ basicKnownKeyNames
gcdIntegerName, lcmIntegerName,
andIntegerName, orIntegerName, xorIntegerName, complementIntegerName,
shiftLIntegerName, shiftRIntegerName, bitIntegerName,
+ integerSDataConName,naturalSDataConName,
-- Natural
naturalTyConName,
@@ -433,9 +433,7 @@ basicKnownKeyNames
, typeErrorVAppendDataConName
, typeErrorShowTypeDataConName
- ] ++ case cIntegerLibraryType of
- IntegerGMP -> [integerSDataConName,naturalSDataConName]
- IntegerSimple -> []
+ ]
genericTyConNames :: [Name]
genericTyConNames = [
@@ -1117,11 +1115,8 @@ integerTyConName, mkIntegerName, integerSDataConName,
gcdIntegerName, lcmIntegerName,
andIntegerName, orIntegerName, xorIntegerName, complementIntegerName,
shiftLIntegerName, shiftRIntegerName, bitIntegerName :: Name
-integerTyConName = tcQual gHC_INTEGER_TYPE (fsLit "Integer") integerTyConKey
-integerSDataConName = dcQual gHC_INTEGER_TYPE (fsLit n) integerSDataConKey
- where n = case cIntegerLibraryType of
- IntegerGMP -> "S#"
- IntegerSimple -> panic "integerSDataConName evaluated for integer-simple"
+integerTyConName = tcQual gHC_INTEGER_TYPE (fsLit "Integer") integerTyConKey
+integerSDataConName = dcQual gHC_INTEGER_TYPE (fsLit "S#") integerSDataConKey
mkIntegerName = varQual gHC_INTEGER_TYPE (fsLit "mkInteger") mkIntegerIdKey
integerToWord64Name = varQual gHC_INTEGER_TYPE (fsLit "integerToWord64") integerToWord64IdKey
integerToInt64Name = varQual gHC_INTEGER_TYPE (fsLit "integerToInt64") integerToInt64IdKey
@@ -1168,10 +1163,7 @@ bitIntegerName = varQual gHC_INTEGER_TYPE (fsLit "bitInteger") bit
-- GHC.Natural types
naturalTyConName, naturalSDataConName :: Name
naturalTyConName = tcQual gHC_NATURAL (fsLit "Natural") naturalTyConKey
-naturalSDataConName = dcQual gHC_NATURAL (fsLit n) naturalSDataConKey
- where n = case cIntegerLibraryType of
- IntegerGMP -> "NatS#"
- IntegerSimple -> panic "naturalSDataConName evaluated for integer-simple"
+naturalSDataConName = dcQual gHC_NATURAL (fsLit "NatS#") naturalSDataConKey
naturalFromIntegerName :: Name
naturalFromIntegerName = varQual gHC_NATURAL (fsLit "naturalFromInteger") naturalFromIntegerIdKey
diff --git a/libraries/integer-gmp/integer-gmp.cabal b/libraries/integer-gmp/integer-gmp.cabal
index 5d2f890..e4ecc7a 100644
--- a/libraries/integer-gmp/integer-gmp.cabal
+++ b/libraries/integer-gmp/integer-gmp.cabal
@@ -60,7 +60,7 @@ library
UnliftedFFITypes
build-depends: ghc-prim ^>= 0.5.1.0
hs-source-dirs: src/
- ghc-options: -this-unit-id integer-gmp -Wall
+ ghc-options: -this-unit-id integer -Wall
cc-options: -std=c99 -Wall
include-dirs: include
diff --git a/libraries/integer-simple/integer-simple.cabal b/libraries/integer-simple/integer-simple.cabal
index 231619c..e6c83da 100644
--- a/libraries/integer-simple/integer-simple.cabal
+++ b/libraries/integer-simple/integer-simple.cabal
@@ -26,6 +26,6 @@ Library
other-modules: GHC.Integer.Type
default-extensions: CPP, MagicHash, BangPatterns, UnboxedTuples,
UnliftedFFITypes, NoImplicitPrelude
- -- We need to set the unit ID to integer-simple
+ -- We need to set the unit ID to integer
-- (without a version number) as it's magic.
- ghc-options: -this-unit-id integer-simple -Wall
+ ghc-options: -this-unit-id integer -Wall
More information about the ghc-commits
mailing list