projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Reject newtypes with strictness annotations; fixes read008
[ghc-hetmet.git]
/
compiler
/
profiling
/
SCCfinal.lhs
diff --git
a/compiler/profiling/SCCfinal.lhs
b/compiler/profiling/SCCfinal.lhs
index
8e02892
..
601aff4
100644
(file)
--- a/
compiler/profiling/SCCfinal.lhs
+++ b/
compiler/profiling/SCCfinal.lhs
@@
-32,13
+32,13
@@
import StgSyn
import PackageConfig ( PackageId )
import StaticFlags ( opt_AutoSccsOnIndividualCafs )
import CostCentre -- lots of things
import PackageConfig ( PackageId )
import StaticFlags ( opt_AutoSccsOnIndividualCafs )
import CostCentre -- lots of things
-import Id ( Id )
+import Id
+import Name
import Module ( Module )
import UniqSupply ( splitUniqSupply, UniqSupply )
#ifdef PROF_DO_BOXING
import UniqSupply ( uniqFromSupply )
#endif
import Module ( Module )
import UniqSupply ( splitUniqSupply, UniqSupply )
#ifdef PROF_DO_BOXING
import UniqSupply ( uniqFromSupply )
#endif
-import Unique ( Unique )
import VarSet
import ListSetOps ( removeDups )
import Outputable
import VarSet
import ListSetOps ( removeDups )
import Outputable
@@
-128,8
+128,13
@@
stgMassageForProfiling this_pkg mod_name us stg_binds
-- Top level CAF without a cost centre attached
-- Attach CAF cc (collect if individual CAF ccs)
= (if opt_AutoSccsOnIndividualCafs
-- Top level CAF without a cost centre attached
-- Attach CAF cc (collect if individual CAF ccs)
= (if opt_AutoSccsOnIndividualCafs
- then let cc = mkAutoCC binder mod_name CafCC
+ then let cc = mkAutoCC binder modl CafCC
ccs = mkSingletonCCS cc
ccs = mkSingletonCCS cc
+ -- careful: the binder might be :Main.main,
+ -- which doesn't belong to module mod_name.
+ -- bug #249, tests prof001, prof002
+ modl | Just m <- nameModule_maybe (idName binder) = m
+ | otherwise = mod_name
in
collectCC cc `thenMM_`
collectCCS ccs `thenMM_`
in
collectCC cc `thenMM_`
collectCCS ccs `thenMM_`
@@
-195,6
+200,10
@@
stgMassageForProfiling this_pkg mod_name us stg_binds
= do_let b e `thenMM` \ (b,e) ->
returnMM (StgLetNoEscape lvs1 lvs2 b e)
= do_let b e `thenMM` \ (b,e) ->
returnMM (StgLetNoEscape lvs1 lvs2 b e)
+ do_expr (StgTick m n expr)
+ = do_expr expr `thenMM` \ expr' ->
+ returnMM (StgTick m n expr')
+
#ifdef DEBUG
do_expr other = pprPanic "SCCfinal.do_expr" (ppr other)
#endif
#ifdef DEBUG
do_expr other = pprPanic "SCCfinal.do_expr" (ppr other)
#endif