summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'compiler')
-rw-r--r--compiler/simplCore/CoreMonad.hs2
-rw-r--r--compiler/simplCore/SimplCore.hs9
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]