[GHC] #11564: Possible overzealous unfolding

GHC ghc-devs at haskell.org
Wed Feb 10 09:12:30 UTC 2016


#11564: Possible overzealous unfolding
-------------------------------------+-------------------------------------
        Reporter:  simonmar          |                Owner:  simonpj
            Type:  bug               |               Status:  new
        Priority:  high              |            Milestone:
       Component:  Compiler          |              Version:  8.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:                    |
-------------------------------------+-------------------------------------

Comment (by simonmar):

 Ok, I understand the reason, we're saying "this function is strict, but
 it's small enough to be inlined anyway so there's no point in
 worker/wrappering it, we'll just inline it instead."  In my case here the
 size is 94 and the arity is 5, so it falls under the threshold.

 The calculation is a bit generous (I found a bug, diff coming soon), but
 even still there's something a bit wrong here.  The problem is that we're
 deciding based on the value of `-funfolding-use-threshold` at the
 //definition// site, which means we can't use that flag to decide at the
 call site.

 Presumably we need the INLINE pragma because otherwise we might lose the
 opportunity to take advantage of the strictness.  But what goes wrong if
 we make it an INLINABLE pragma instead?

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


More information about the ghc-tickets mailing list