[GHC] #15560: Full laziness destroys opportunities for join points
GHC
ghc-devs at haskell.org
Thu Aug 23 21:55:15 UTC 2018
#15560: Full laziness destroys opportunities for join points
-------------------------------------+-------------------------------------
Reporter: AndreasK | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone: 8.6.1
Component: Compiler | Version: 8.4.3
(CodeGen) |
Resolution: | Keywords: JoinPoints
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: #14287 | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
Generally, I think we should not float join points -- in general floating
them will stop them being join points. It'd be easy to change `SetLevels`
thus -- but intuition is a poor guide and it'd be really worth trying it
and measuring the effect.
However, if the binding can go all the way to the top level, then there
seems no downside to floating it: we end up with a smaller (and hence
perhaps more inlinable) function; and the jump to the join point is still
a nice, efficient jump. What's not to like? (Your Description suggests
that you think that doing so is Bad. Why?)
All that said, there is a Huge Mess in `SetLevels` around join points with
stuff about the "join ceiling". I want to expunge all that, but have
lacked the time. The trouble is that we do want some limited, local
floating -- I have a whole WIP tree pending on that, but it's in limbo.
If anyone would like to work on this, I'll commit my WIP to a branch and
offer advice/support on taking it forward.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15560#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list