[GHC] #14137: Do more inlining into non-recursive join points

GHC ghc-devs at haskell.org
Fri Aug 25 09:56:51 UTC 2017


#14137: Do more inlining into non-recursive join points
-------------------------------------+-------------------------------------
        Reporter:  simonpj           |                Owner:  nomeata
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.2.1
      Resolution:                    |             Keywords:  JoinPoints
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 simonpj):

 Ha!  I tried
 {{{
 module T14137 where

 f xs = let thunk = length xs
            j = Just thunk
            g 0 = j
            g n = g (n-1)
        in
        g 7
 }}}
 Indeed, the inliner does not inline `thunk`, because of the lack of
 comment:3.  But later `FloatIn` does push it inwards (it knows about join
 points); and the simplifier also knows not to float things out of join
 points.  So all is well.

 Still, it's more direct to do it right away. I'll do it shortly because
 I'm meddling there anyway.

 That's all for this ticket!

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


More information about the ghc-tickets mailing list