[GHC] #11158: Combine exprIsTrivial and cpe_ExprIsTrivial

GHC ghc-devs at haskell.org
Fri Dec 4 10:32:52 UTC 2015


#11158: Combine exprIsTrivial and cpe_ExprIsTrivial
-------------------------------------+-------------------------------------
        Reporter:  simonpj           |                Owner:  scpmw
            Type:  bug               |               Status:  new
        Priority:  high              |            Milestone:  8.0.1
       Component:  Compiler          |              Version:  7.10.2
      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:                    |
-------------------------------------+-------------------------------------

Comment (by scpmw):

 From a quick scan through the Git history, that particular comment has
 been out of date for quite some time, starting with Simon M's tick
 overhaul in `7bb0447`, where
 {{{
 Note [SCCs are trivial]
 ~~~~~~~~~~~~~~~~~~~~~~~
 We used not to treat (_scc_ "foo" x) as trivial, because it really
 generates code, (and a heap object when it's a function arg) to
 capture the cost centre.  However, the profiling system discounts the
 allocation costs for such "boxing thunks" whereas the extra costs of
 *not* inlining otherwise-trivial bindings can be high, and are hard to
 discount.
 }}}

 got replaced by

 {{{
 Note [Tick trivial]
 ~~~~~~~~~~~~~~~~~~~
 Ticks are not trivial.  If we treat "tick<n> x" as trivial, it will be
 inlined inside lambdas and the entry count will be skewed, for
 example.  Furthermore "scc<n> x" will turn into just "x" in mkTick.
 }}}

 Since then, `exprIsTrivial` has in fact been slightly more restrictive
 than `cpe_exprIsTrivial` concerning HPC ticks. When adding the exception
 for `SourceNote`s, I considered that an inconsistency.

 My vote would be to combine them - would have done it myself if I had
 spotted it.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11158#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list