diff options
author | Matthew Pickering <matthewtpickering@gmail.com> | 2018-03-02 18:45:47 +0000 |
---|---|---|
committer | Matthew Pickering <matthewtpickering@gmail.com> | 2018-03-02 18:48:10 +0000 |
commit | f8e3cd3b160d20dbd18d490b7babe43153bb3287 (patch) | |
tree | 99d8774187c0765b2e66cf2fec66a0dc25641cb7 /compiler/simplCore | |
parent | 8dab89b4d148d322cd7ac8c374be3342ab017297 (diff) | |
download | haskell-f8e3cd3b160d20dbd18d490b7babe43153bb3287.tar.gz |
Only load plugins once
Summary: This is part of D4342 which is worthwhile to merge on its own.
Reviewers: nboldi, bgamari
Reviewed By: bgamari
Subscribers: rwbarton, thomie, carter
Differential Revision: https://phabricator.haskell.org/D4410
Co-authored-by: Boldizsar Nemeth <nboldi@elte.hu>
Diffstat (limited to 'compiler/simplCore')
-rw-r--r-- | compiler/simplCore/SimplCore.hs | 34 |
1 files changed, 7 insertions, 27 deletions
diff --git a/compiler/simplCore/SimplCore.hs b/compiler/simplCore/SimplCore.hs index 6592ff60e1..4dfa19863c 100644 --- a/compiler/simplCore/SimplCore.hs +++ b/compiler/simplCore/SimplCore.hs @@ -51,6 +51,8 @@ import Vectorise ( vectorise ) import SrcLoc import Util import Module +import Plugins ( withPlugins,installCoreToDos ) +import DynamicLoading -- ( initializePlugins ) import Maybes import UniqSupply ( UniqSupply, mkSplitUniqSupply, splitUniqSupply ) @@ -58,14 +60,6 @@ import UniqFM import Outputable import Control.Monad import qualified GHC.LanguageExtensions as LangExt - -#if defined(GHCI) -import DynamicLoading ( loadPlugins ) -import Plugins ( installCoreToDos ) -#else -import DynamicLoading ( pluginError ) -#endif - {- ************************************************************************ * * @@ -87,7 +81,11 @@ core2core hsc_env guts@(ModGuts { mg_module = mod ; ; (guts2, stats) <- runCoreM hsc_env hpt_rule_base us mod orph_mods print_unqual loc $ - do { all_passes <- addPluginPasses builtin_passes + do { hsc_env' <- getHscEnv + ; dflags' <- liftIO $ initializePlugins hsc_env' + (hsc_dflags hsc_env') + ; all_passes <- withPlugins dflags' + installCoreToDos builtin_passes ; runCorePasses all_passes guts } ; Err.dumpIfSet_dyn dflags Opt_D_dump_simpl_stats @@ -373,24 +371,6 @@ getCoreToDo dflags flatten_todos passes ++ flatten_todos rest flatten_todos (todo : rest) = todo : flatten_todos rest --- Loading plugins - -addPluginPasses :: [CoreToDo] -> CoreM [CoreToDo] -#if !defined(GHCI) -addPluginPasses builtin_passes - = do { dflags <- getDynFlags - ; let pluginMods = pluginModNames dflags - ; unless (null pluginMods) (pluginError pluginMods) - ; return builtin_passes } -#else -addPluginPasses builtin_passes - = do { hsc_env <- getHscEnv - ; named_plugins <- liftIO (loadPlugins hsc_env) - ; foldM query_plug builtin_passes named_plugins } - where - query_plug todos (_, plug, options) = installCoreToDos plug options todos -#endif - {- Note [Inline in InitialPhase] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In GHC 8 and earlier we did not inline anything in the InitialPhase. But that is |