diff options
Diffstat (limited to 'compiler/GHC/Driver/Main.hs')
-rw-r--r-- | compiler/GHC/Driver/Main.hs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/compiler/GHC/Driver/Main.hs b/compiler/GHC/Driver/Main.hs index 7672dcb3e7..cd37ac4f3a 100644 --- a/compiler/GHC/Driver/Main.hs +++ b/compiler/GHC/Driver/Main.hs @@ -1426,16 +1426,22 @@ hscGetSafeMode tcg_env = do -- Simplifiers -------------------------------------------------------------- +-- | Run Core2Core simplifier. The list of String is a list of (Core) plugin +-- module names added via TH (cf 'addCorePlugin'). hscSimplify :: HscEnv -> [String] -> ModGuts -> IO ModGuts hscSimplify hsc_env plugins modguts = runHsc hsc_env $ hscSimplify' plugins modguts +-- | Run Core2Core simplifier. The list of String is a list of (Core) plugin +-- module names added via TH (cf 'addCorePlugin'). hscSimplify' :: [String] -> ModGuts -> Hsc ModGuts hscSimplify' plugins ds_result = do hsc_env <- getHscEnv - let hsc_env_with_plugins = hsc_env - { hsc_dflags = foldr addPluginModuleName (hsc_dflags hsc_env) plugins - } + hsc_env_with_plugins <- if null plugins -- fast path + then return hsc_env + else liftIO $ initializePlugins $ hsc_env + { hsc_dflags = foldr addPluginModuleName (hsc_dflags hsc_env) plugins + } {-# SCC "Core2Core" #-} liftIO $ core2core hsc_env_with_plugins ds_result |