import StgSyn
-import DynFlags ( DynFlags )
+import Packages ( HomeModules )
import StaticFlags ( opt_AutoSccsOnIndividualCafs )
import CostCentre -- lots of things
import Id ( Id )
\begin{code}
stgMassageForProfiling
- :: DynFlags
+ :: HomeModules
-> Module -- module name
-> UniqSupply -- unique supply
-> [StgBinding] -- input
-> (CollectedCCs, [StgBinding])
-stgMassageForProfiling dflags mod_name us stg_binds
+stgMassageForProfiling pdeps mod_name us stg_binds
= let
((local_ccs, extern_ccs, cc_stacks),
stg_binds2)
do_top_rhs :: Id -> StgRhs -> MassageM StgRhs
do_top_rhs binder (StgRhsClosure _ bi fv u srt [] (StgSCC cc (StgConApp con args)))
- | not (isSccCountCostCentre cc) && not (isDllConApp dflags con args)
+ | not (isSccCountCostCentre cc) && not (isDllConApp pdeps con args)
-- Trivial _scc_ around nothing but static data
-- Eliminate _scc_ ... and turn into StgRhsCon
-}
do_rhs (StgRhsClosure _ bi fv u srt args expr)
- = slurpSCCs currentCCS expr `thenMM` \ (expr', ccs) ->
- do_expr expr' `thenMM` \ expr'' ->
+ = slurpSCCs currentCCS expr `thenMM` \ (expr', ccs) ->
+ do_expr expr' `thenMM` \ expr'' ->
returnMM (StgRhsClosure ccs bi fv u srt args expr'')
where
slurpSCCs ccs (StgSCC cc e)
= collectCC cc `thenMM_`
- slurpSCCs ccs e `thenMM` \ (e', ccs') ->
- returnMM (e', pushCCOnCCS cc ccs')
+ slurpSCCs (cc `pushCCOnCCS` ccs) e
slurpSCCs ccs e
= returnMM (e, ccs)