diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/simplCore/CoreMonad.hs | 2 | ||||
-rw-r--r-- | compiler/simplCore/SimplCore.hs | 9 |
2 files changed, 9 insertions, 2 deletions
diff --git a/compiler/simplCore/CoreMonad.hs b/compiler/simplCore/CoreMonad.hs index ce5286d08a..fa72834ef9 100644 --- a/compiler/simplCore/CoreMonad.hs +++ b/compiler/simplCore/CoreMonad.hs @@ -169,7 +169,7 @@ instance Outputable CoreToDo where ppr CoreDoPrintCore = ptext (sLit "Print core") ppr (CoreDoRuleCheck {}) = ptext (sLit "Rule check") ppr CoreDoNothing = ptext (sLit "CoreDoNothing") - ppr (CoreDoPasses {}) = ptext (sLit "CoreDoPasses") + ppr (CoreDoPasses passes) = ptext (sLit "CoreDoPasses") <+> ppr passes pprPassDetails :: CoreToDo -> SDoc pprPassDetails (CoreDoSimplify n md) = vcat [ ptext (sLit "Max iterations =") <+> int n diff --git a/compiler/simplCore/SimplCore.hs b/compiler/simplCore/SimplCore.hs index 9207cf472a..8670e30a29 100644 --- a/compiler/simplCore/SimplCore.hs +++ b/compiler/simplCore/SimplCore.hs @@ -109,7 +109,7 @@ core2core hsc_env guts@(ModGuts { mg_module = mod getCoreToDo :: DynFlags -> [CoreToDo] getCoreToDo dflags - = core_todo + = flatten_todos core_todo where opt_level = optLevel dflags phases = simplPhases dflags @@ -322,6 +322,13 @@ getCoreToDo dflags maybe_rule_check (Phase 0) ] + -- Remove 'CoreDoNothing' and flatten 'CoreDoPasses' for clarity. + flatten_todos [] = [] + flatten_todos (CoreDoNothing : rest) = flatten_todos rest + flatten_todos (CoreDoPasses passes : rest) = + flatten_todos passes ++ flatten_todos rest + flatten_todos (todo : rest) = todo : flatten_todos rest + -- Loading plugins addPluginPasses :: [CoreToDo] -> CoreM [CoreToDo] |