- ; let fam_inst_env = mg_fam_inst_env guts
- dump_phase = shouldDumpSimplPhase (hsc_dflags hsc_env) mode
- simplify_pgm = simplifyPgmIO dump_phase mode switches
- hsc_env us rb fam_inst_env
-
- ; doPassM (liftIOWithCount . simplify_pgm) guts }
- where
- doc = ptext (sLit "Simplifier Phase") <+> text (showPpr mode)
-
-simplifyPgmIO :: Bool
- -> SimplifierMode
- -> [SimplifierSwitch]
- -> HscEnv
- -> UniqSupply
- -> RuleBase
- -> FamInstEnv
- -> [CoreBind]
- -> IO (SimplCount, [CoreBind]) -- New bindings
-
-simplifyPgmIO dump_phase mode switches hsc_env us imp_rule_base fam_inst_env binds
- = do {
- (termination_msg, it_count, counts_out, binds')
- <- do_iteration us 1 (zeroSimplCount dflags) binds ;
-
- Err.dumpIfSet (dump_phase && dopt Opt_D_dump_simpl_stats dflags)
+ ; liftIOWithCount $
+ simplifyPgmIO pass hsc_env us rb guts }
+
+simplifyPgmIO :: CoreToDo
+ -> HscEnv
+ -> UniqSupply
+ -> RuleBase
+ -> ModGuts
+ -> IO (SimplCount, ModGuts) -- New bindings
+
+simplifyPgmIO pass@(CoreDoSimplify mode max_iterations switches)
+ hsc_env us hpt_rule_base
+ guts@(ModGuts { mg_binds = binds, mg_rules = rules
+ , mg_fam_inst_env = fam_inst_env })
+ = do { (termination_msg, it_count, counts_out, guts')
+ <- do_iteration us 1 [] binds rules
+
+ ; Err.dumpIfSet (dump_phase && dopt Opt_D_dump_simpl_stats dflags)