* "Distributes" given cost-centres to all as-yet-unmarked RHSs.
\begin{code}
+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
+-- for details
+
module SCCfinal ( stgMassageForProfiling ) where
#include "HsVersions.h"
import StgSyn
-import PackageConfig ( PackageId )
import StaticFlags ( opt_AutoSccsOnIndividualCafs )
import CostCentre -- lots of things
import Id
import Name
-import Module ( Module )
+import Module
import UniqSupply ( splitUniqSupply, UniqSupply )
#ifdef PROF_DO_BOXING
import UniqSupply ( uniqFromSupply )
modl | Just m <- nameModule_maybe (idName binder) = m
| otherwise = mod_name
in
- collectCC cc `thenMM_`
+ collectNewCC cc `thenMM_`
collectCCS ccs `thenMM_`
returnMM ccs
else
else -- must declare it "extern"
((local_ccs, cc : extern_ccs, ccss), ())
+-- Version of collectCC used when we definitely want to declare this
+-- CC as local, even if its module name is not the same as the current
+-- module name (eg. the special :Main module) see bug #249, #1472,
+-- test prof001,prof002.
+collectNewCC :: CostCentre -> MassageM ()
+collectNewCC cc mod_name scope_cc us ids (local_ccs, extern_ccs, ccss)
+ = ((cc : local_ccs, extern_ccs, ccss), ())
+
collectCCS :: CostCentreStack -> MassageM ()
collectCCS ccs mod_name scope_cc us ids (local_ccs, extern_ccs, ccss)