[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