[GHC] #10606: avoid redundant stores to the stack when examining already-tagged data

GHC ghc-devs at haskell.org
Thu Jul 9 08:10:28 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 simonmar):

 This is basically the same as #8905.

 It's not hard to rearrange the code to optimise the already-evaluated
 path, but as you noticed it will increase code size due to not being able
 to share the saving code with the heap-check failure, and having to reload
 things from the stack in the unevaluated case.  Things are rather
 delicately arranged at the moment to generate small code.

 I believe the reason that you get some duplication when sinking the return
 address is because there's a special case in the stack allocator to spot
 this.

 One thing I think it would be worth doing is having an option to tune the
 tradeoff between code size and speed (like gcc's -Os), and the code
 generated for case expressions would be a prime candidate to be altered by
 this.

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


More information about the ghc-tickets mailing list