summaryrefslogtreecommitdiff
path: root/compiler/backpack
diff options
context:
space:
mode:
authorDouglas Wilson <douglas.wilson@gmail.com>2017-05-20 12:47:41 -0400
committerBen Gamari <ben@smart-cactus.org>2017-05-20 16:29:18 -0400
commit53c78be0aab76a3107c4dacbb1d177afacdd37fa (patch)
tree2ce5906fc856e3c49d6e4657d6c95870e6f55b83 /compiler/backpack
parent0102e2b731d33abdff4c3cde6938d1bede8f51cb (diff)
downloadhaskell-53c78be0aab76a3107c4dacbb1d177afacdd37fa.tar.gz
Compile modules that are needed by template haskell, even with -fno-code.
This patch relates to Trac #8025 The goal here is to enable typechecking of packages that contain some template haskell. Prior to this patch, compilation of a package with -fno-code would fail if any functions in the package were called from within a splice. downsweep is changed to do an additional pass over the modules, targetting any ModSummaries transitively depended on by a module that has LangExt.TemplateHaskell enabled. Those targeted modules have hscTarget changed from HscNothing to the default target of the platform. There is a small change to the prevailing_target logic to enable this. A simple test is added. I have benchmarked with and without a patched haddock (available:https://github.com/duog/haddock/tree/wip-no-explicit-th-compi lation). Running cabal haddock on the wreq package results in a 25% speedup on my machine: time output from patched cabal haddock: real 0m5.780s user 0m5.304s sys 0m0.496s time output from unpatched cabal haddock: real 0m7.712s user 0m6.888s sys 0m0.736s Reviewers: austin, bgamari, ezyang Reviewed By: bgamari Subscribers: bgamari, DanielG, rwbarton, thomie GHC Trac Issues: #8025 Differential Revision: https://phabricator.haskell.org/D3441
Diffstat (limited to 'compiler/backpack')
-rw-r--r--compiler/backpack/DriverBkp.hs1
1 files changed, 1 insertions, 0 deletions
diff --git a/compiler/backpack/DriverBkp.hs b/compiler/backpack/DriverBkp.hs
index 86e84d13f9..a82e66b7b0 100644
--- a/compiler/backpack/DriverBkp.hs
+++ b/compiler/backpack/DriverBkp.hs
@@ -155,6 +155,7 @@ withBkpSession cid insts deps session_type do_this = do
-- turn on interface writing. However, if the user also
-- explicitly passed in `-fno-code`, we DON'T want to write
-- interfaces unless the user also asked for `-fwrite-interface`.
+ -- See Note [-fno-code mode]
(case session_type of
-- Make sure to write interfaces when we are type-checking
-- indefinite packages.