#5654: Profiling semantics bug
---------------------------------+------------------------------------------
Reporter: simonmar | Owner: simonmar
Type: bug | Status: new
Priority: normal | Milestone: 7.4.1
Component: Profiling | Version: 7.2.1
Keywords: | Testcase: profiling/should_run/scc004
Blockedby: | Difficulty:
Os: Unknown/Multiple | Blocking:
Architecture: Unknown/Multiple | Failure: None/Unknown
---------------------------------+------------------------------------------
GHC doesn't quite implement the new cost-centre stack semantics correctly.
e.g.
{{{
{-# NOINLINE f #-}
f :: Int -> Int
f = {-# SCC f #-} g
{-# NOINLINE g #-}
g :: Int -> Int
g x = {-# SCC g #-} x + 1
main = print (f 3)
}}}
What we want is
{{{
CAF Main 106 0 0.0 0.7 0.0
21.7
f Main 201 1 0.0 0.0 0.0
0.0
main Main 200 1 0.0 20.9 0.0
21.0
f Main 202 0 0.0 0.0 0.0
0.1
g Main 203 1 0.0 0.1 0.0
0.1
}}}
but we get
{{{
CAF Main 106 0 0.0 0.7 0.0
21.6
f Main 201 1 0.0 0.0 0.0
0.0
main Main 200 1 0.0 20.9 0.0
20.9
g Main 202 1 0.0 0.0 0.0
0.0
}}}
The original flat CC profiler used to use `IND_PERM` indirections to
handle this kind of thing, but we aren't doing that now.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5654>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs