
#12962: No automatic SCC annotations for functions marked INLINABLE -------------------------------------+------------------------------------- Reporter: MikolajKonarski | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Profiling | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by osa1): * cc: osa1 (added) Comment: I'm not sure if this is intentional. `compiler/deSugar/Coverage.hs` is responsible for adding ticks. It's using `BasicTypes.isAnyInlinePragma` for deciding whether to add a tick or not, and that function returns true for both `INLINE` and `INLINABLE`. But if you look at the note `inline sccs`: {{{#!haskell -- Note [inline sccs] -- -- It should be reasonable to add ticks to INLINE functions; however -- currently this tickles a bug later on because the SCCfinal pass -- does not look inside unfoldings to find CostCentres. It would be -- difficult to fix that, because SCCfinal currently works on STG and -- not Core (and since it also generates CostCentres for CAFs, -- changing this would be difficult too). -- -- Another reason not to add ticks to INLINE functions is that this -- sometimes handy for avoiding adding a tick to a particular function -- (see #6131) -- -- So for now we do not add any ticks to INLINE functions at all. }}} it doesn't mention `INLINABLE`. #6131 also doesn't mention `INLINABLE`, maybe it didn't exist at the time. I think it might make sense to add cost centres to `INLINABLE` functions as they may not be inlined. Somewhat related ticket: #10766 (semantics of `INLINE` and `INLINABLE` are not clear). I also looked at the git history. The commit that added the note also added `isAnyInlinePragma` calls, and that functions had same semantics as today. So maybe it's intentional and we should update the documentation. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12962#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler