import CoreUnfold
import PprCore ( pprCoreBindings, pprIdCoreRule, pprCoreExpr )
import OccurAnal ( occurAnalyseBinds )
-import CoreUtils ( etaReduceExpr, coreBindsSize )
+import CoreUtils ( etaReduce, coreBindsSize )
import Simplify ( simplTopBinds, simplExpr )
import SimplUtils ( simplBinders )
import SimplMonad
return (processed_binds, orphan_rules)
-simplifyExpr :: DynFlags -- includes spec of what core-to-core passes to do
+simplifyExpr :: DynFlags -- includes spec of what core-to-core passes to do
-> PersistentCompilerState
-> HomeSymbolTable
-> CoreExpr
-> IO CoreExpr
simplifyExpr dflags pcs hst expr
= do {
+ ; showPass dflags "Simplify"
+
; us <- mkSplitUniqSupply 's'
- ; let (expr', counts) = initSmpl dflags sw_chkr us emptyVarSet black_list_all
- (simplExpr expr)
+ ; let (expr', _counts) = initSmpl dflags sw_chkr us emptyVarSet black_list_all
+ (simplExpr expr)
; dumpIfSet_dyn dflags Opt_D_dump_simpl "Simplfied expression"
(pprCoreExpr expr')
-- Otherwise we don't match when given an argument like
-- (\a. h a a)
= simplExpr e `thenSmpl` \ e' ->
- returnSmpl (etaReduceExpr e')
+ returnSmpl (etaReduce e')
\end{code}
text "",
pprSimplCount counts_out]);
- endPass dflags "Simplify"
- (dopt Opt_D_verbose_core2core dflags
- && not (dopt Opt_D_dump_simpl_iterations dflags))
- binds' ;
+ endPass dflags "Simplify" Opt_D_verbose_core2core binds';
return (counts_out, binds')
}
if dopt Opt_D_dump_simpl_iterations dflags then
endPass dflags
("Simplifier iteration " ++ show iteration_no ++ " result")
- (dopt Opt_D_verbose_core2core dflags)
+ Opt_D_verbose_core2core
binds'
else
return [] ;