[GHC] #14372: CMM contains a bunch of tail-merging opportunities
GHC
ghc-devs at haskell.org
Fri Oct 20 14:37:48 UTC 2017
#14372: CMM contains a bunch of tail-merging opportunities
-------------------------------------+-------------------------------------
Reporter: heisenbug | Owner: (none)
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.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 heisenbug):
Replying to [comment:2 nomeata]:
> > It would be nice to factor out the common tails, e.g. by branching to
the first tail already emitted.
>
> Branches can be expensive, so this might not be a clear win. Have you
measured the effect? (You can do that without modifying GHC: Just get your
hands on the assembly file, make the changes you want to see, and
compare.)
These will probably be short, known branches. Since more ''relevant'' code
now can reside in the instruction cache, I expect less misses and no
prediction failures.
>
> The other idea, detecting blocks that are equal up-to a constant, sounds
fun. But again, the question is: Is it worth it?
Well, it makes code straight-line and branchless. Eliminates jump-tables.
Shrinks code size. Which one of these is a penalty? ;-)
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14372#comment:6>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list