[GHC] #10606: avoid redundant stores to the stack when examining already-tagged data
GHC
ghc-devs at haskell.org
Wed Jul 8 23:12:32 UTC 2015
#10606: avoid redundant stores to the stack when examining already-tagged data
-------------------------------------+-------------------------------------
Reporter: rwbarton | Owner:
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.11
(CodeGen) | Keywords:
Resolution: | Architecture:
Operating System: Unknown/Multiple | Unknown/Multiple
Type of failure: Runtime | Test Case:
performance bug | Blocking:
Blocked By: | Differential Revisions:
Related Tickets: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
Moreover, the code for each alternative has to work regardless of whether
we arrive at it by doing an eval-and-return, or just jump to it for the
fully-tagged case. So the code for the alternative needs to know where
t,f are going to be.
You say that you can use them "wherever they are", and that may be true if
they are in local variables (= registers). But then the return-from-eval
code will need to re-load them from the stack into the agreed registers,
before going to the shared code for the alternative. And that could be
bad if the first thing the alternative does is to save them on the stack
for another eval!
Morover, an unboxed-tuple-return might use up a bunch of registers.
This looks tricky to me. Happy to Skype about it if you are keen to
pursue. But I think there is lower-hanging fruit: see "Cmm and code
generation" on [wiki:Status/SLPJ-Tickets].
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10606#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list