Make GHC (the library) flexible in the choice of integer library
authorJoachim Breitner <mail@joachim-breitner.de>
Wed, 3 Oct 2018 13:36:55 +0000 (15:36 +0200)
committerKrzysztof Gogolewski <krz.gogolewski@gmail.com>
Wed, 3 Oct 2018 13:40:22 +0000 (15:40 +0200)
commitfc2ff6dd7496a33bf68165b28f37f40b7d647418
tree4cb624e2a8046da6c0bdcb3c6acf0aa1dfd4fa5e
parent3dedffa2a51952b05c22b2d08668155ac07d7320
Make GHC (the library) flexible in the choice of integer library

Summary:
We have more and more users of GHC as a library, for example the
Haskell-to-WebAssembly-compiler https://github.com/tweag/asterius.
These need to make different decisions about various aspects of
code generation than the host compiler, and ideally GHC-the-library
allows them to set the `DynFlags` as needed.

This patch adds a new `DynFlag` that configures which `integer`
library to use. This flag is initialized by `cIntegerLibraryType`
(as before), and is only used in `CorePrep` to decide whether to
use `S#` or not.

The other code paths that were varying based on `cIntegerLibraryType`
are no now longer varying: The trick is to use `integer-wired-in`
as the `-this-unit-id` when compiling either `integer-gmp` or
`integer-simple`.

Test Plan: Validate is happy.

Reviewers: hvr, bgamari

Reviewed By: bgamari

Subscribers: TerrorJack, adamse, simonpj, rwbarton, carter

GHC Trac Issues: #13477

Differential Revision: https://phabricator.haskell.org/D5079
compiler/basicTypes/Module.hs
compiler/coreSyn/CorePrep.hs
compiler/ghc.mk
compiler/main/DynFlags.hs
compiler/main/Packages.hs
compiler/prelude/PrelNames.hs
libraries/integer-gmp/integer-gmp.cabal
libraries/integer-simple/integer-simple.cabal