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
Showing
- compiler/backpack/DriverBkp.hs 1 addition, 0 deletionscompiler/backpack/DriverBkp.hs
- compiler/main/DriverPipeline.hs 40 additions, 33 deletionscompiler/main/DriverPipeline.hs
- compiler/main/DynFlags.hs 4 additions, 6 deletionscompiler/main/DynFlags.hs
- compiler/main/GhcMake.hs 165 additions, 17 deletionscompiler/main/GhcMake.hs
- compiler/main/HscTypes.hs 1 addition, 1 deletioncompiler/main/HscTypes.hs
- testsuite/tests/th/should_compile/T8025/A.hs 3 additions, 0 deletionstestsuite/tests/th/should_compile/T8025/A.hs
- testsuite/tests/th/should_compile/T8025/B.hs 5 additions, 0 deletionstestsuite/tests/th/should_compile/T8025/B.hs
- testsuite/tests/th/should_compile/T8025/Makefile 3 additions, 0 deletionstestsuite/tests/th/should_compile/T8025/Makefile
- testsuite/tests/th/should_compile/T8025/all.T 2 additions, 0 deletionstestsuite/tests/th/should_compile/T8025/all.T
Loading
Please register or sign in to comment