- mg_module = mod,
- mg_boot = isHsBoot hsc_src,
- mg_exports = exports,
- mg_deps = deps,
- mg_usages = usages,
- mg_dir_imps = [m | (m,_,_) <- moduleEnvElts dir_imp_mods],
- mg_rdr_env = rdr_env,
- mg_fix_env = fix_env,
- mg_deprecs = deprecs,
- mg_types = type_env,
- mg_insts = insts,
- mg_rules = ds_rules,
- mg_binds = ds_binds,
- mg_foreign = ds_fords }
-
- ; return (warns, Just mod_guts)
- }}
+ mg_module = mod,
+ mg_boot = isHsBoot hsc_src,
+ mg_exports = exports,
+ mg_deps = deps,
+ mg_usages = usages,
+ mg_dir_imps = [m | (m,_,_) <- moduleEnvElts dir_imp_mods],
+ mg_rdr_env = rdr_env,
+ mg_fix_env = fix_env,
+ mg_deprecs = deprecs,
+ mg_types = type_env,
+ mg_insts = insts,
+ mg_fam_insts = fam_insts,
+ mg_inst_env = inst_env,
+ mg_fam_inst_env = fam_inst_env,
+ mg_rules = ds_rules,
+ mg_binds = ds_binds,
+ mg_foreign = ds_fords,
+ mg_hpc_info = ds_hpc_info,
+ mg_modBreaks = modBreaks,
+ mg_vect_info = noVectInfo
+ }
+ ; return (Just mod_guts)
+ }}}
+
+mkAutoScc :: Module -> NameSet -> AutoScc
+mkAutoScc mod exports
+ | not opt_SccProfilingOn -- No profiling
+ = NoSccs
+ | opt_AutoSccsOnAllToplevs -- Add auto-scc on all top-level things
+ = AddSccs mod (\id -> True)
+ | opt_AutoSccsOnExportedToplevs -- Only on exported things
+ = AddSccs mod (\id -> idName id `elemNameSet` exports)
+ | otherwise
+ = NoSccs