+
+%************************************************************************
+%* *
+\subsection[addAutoScc]{Adding automatic sccs}
+%* *
+%************************************************************************
+
+\begin{code}
+addAutoScc :: Maybe (Module, Group) -- Module and group
+ -> (Id, CoreExpr)
+ -> (Id, CoreExpr)
+
+addAutoScc mb_mod_grp pair@(bndr, core_expr)
+ = case mb_mod_grp of
+ Just (mod,grp)
+ | worthSCC core_expr &&
+ (opt_AutoSccsOnAllToplevs ||
+ (isExported bndr && opt_AutoSccsOnExportedToplevs))
+ -> (bndr, SCC (mkAutoCC bndr mod grp IsNotCafCC) core_expr)
+ _ -> pair -- no auto-annotation.
+
+worthSCC (SCC _ _) = False
+worthSCC (Con _ _) = False
+worthSCC core_expr = True
+\end{code}
+