summaryrefslogtreecommitdiff
path: root/compiler/GHC/Core/Opt/Pipeline.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Core/Opt/Pipeline.hs')
-rw-r--r--compiler/GHC/Core/Opt/Pipeline.hs22
1 files changed, 10 insertions, 12 deletions
diff --git a/compiler/GHC/Core/Opt/Pipeline.hs b/compiler/GHC/Core/Opt/Pipeline.hs
index 910b24061b..b8ac982021 100644
--- a/compiler/GHC/Core/Opt/Pipeline.hs
+++ b/compiler/GHC/Core/Opt/Pipeline.hs
@@ -184,7 +184,7 @@ getCoreToDo logger dflags
simpl_phase phase name iter
= CoreDoPasses
$ [ maybe_strictness_before phase
- , CoreDoSimplify iter
+ , CoreDoSimplify $ CoreDoSimplifyOpts iter
(base_mode { sm_phase = phase
, sm_names = [name] })
@@ -195,7 +195,7 @@ getCoreToDo logger dflags
simplify name = simpl_phase FinalPhase name max_iter
-- initial simplify: mk specialiser happy: minimum effort please
- simpl_gently = CoreDoSimplify max_iter
+ simpl_gently = CoreDoSimplify $ CoreDoSimplifyOpts max_iter
(base_mode { sm_phase = InitialPhase
, sm_names = ["Gentle"]
, sm_rules = rules_on -- Note [RULEs enabled in InitialPhase]
@@ -491,8 +491,8 @@ doCorePass pass guts = do
let updateBindsM f = f (mg_binds guts) >>= \b' -> return $ guts { mg_binds = b' }
case pass of
- CoreDoSimplify {} -> {-# SCC "Simplify" #-}
- simplifyPgm pass guts
+ CoreDoSimplify cfg -> {-# SCC "Simplify" #-}
+ simplifyPgm cfg guts
CoreCSE -> {-# SCC "CommonSubExpr" #-}
updateBinds cseProgram
@@ -650,20 +650,20 @@ simplExprGently env expr = do
************************************************************************
-}
-simplifyPgm :: CoreToDo -> ModGuts -> CoreM ModGuts
-simplifyPgm pass guts
+simplifyPgm :: CoreDoSimplifyOpts -> ModGuts -> CoreM ModGuts
+simplifyPgm cfg guts
= do { hsc_env <- getHscEnv
; rb <- getRuleBase
; liftIOWithCount $
- simplifyPgmIO pass hsc_env rb guts }
+ simplifyPgmIO cfg hsc_env rb guts }
-simplifyPgmIO :: CoreToDo
+simplifyPgmIO :: CoreDoSimplifyOpts
-> HscEnv
-> RuleBase
-> ModGuts
-> IO (SimplCount, ModGuts) -- New bindings
-simplifyPgmIO pass@(CoreDoSimplify max_iterations mode)
+simplifyPgmIO cfg@(CoreDoSimplifyOpts max_iterations mode)
hsc_env hpt_rule_base
guts@(ModGuts { mg_module = this_mod
, mg_rdr_env = rdr_env
@@ -779,7 +779,7 @@ simplifyPgmIO pass@(CoreDoSimplify max_iterations mode)
-- Dump the result of this iteration
let { dump_core_sizes = not (gopt Opt_SuppressCoreSizes dflags) } ;
dump_end_iteration logger dump_core_sizes print_unqual iteration_no counts1 binds2 rules1 ;
- lintPassResult hsc_env pass binds2 ;
+ lintPassResult hsc_env (CoreDoSimplify cfg) binds2 ;
-- Loop
do_iteration (iteration_no + 1) (counts1:counts_so_far) binds2 rules1
@@ -793,8 +793,6 @@ simplifyPgmIO pass@(CoreDoSimplify max_iterations mode)
totalise = foldr (\c acc -> acc `plusSimplCount` c)
(zeroSimplCount dflags)
-simplifyPgmIO _ _ _ _ = panic "simplifyPgmIO"
-
-------------------
dump_end_iteration :: Logger -> Bool -> PrintUnqualified -> Int
-> SimplCount -> CoreProgram -> [CoreRule] -> IO ()