[GHC] #9020: Massive blowup of code size on trivial program

GHC ghc-devs at haskell.org
Fri Apr 17 13:21:57 UTC 2015


#9020: Massive blowup of code size on trivial program
-------------------------------------+-------------------------------------
        Reporter:  simonpj           |                   Owner:
            Type:  bug               |                  Status:  closed
        Priority:  normal            |               Milestone:
       Component:  Compiler          |                 Version:  7.8.2
      Resolution:  fixed             |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  None/Unknown      |  Unknown/Multiple
      Blocked By:                    |               Test Case:
 Related Tickets:                    |  perf/compiler/T9020
                                     |                Blocking:
                                     |  Differential Revisions:
-------------------------------------+-------------------------------------

Comment (by simonpj):

 > In T9020, the problem is not really that `return ()` is eta-expanded,
 but that it is eta-expanded in a phase where no inlining happens, namely
 in the gentle phase. If we do not eta-expand in this phase (by changing
 `simpl_gently` in `SimplCore`), we can revert to `old_arity    =
 manifestArity` and this program still compiles quickly.

 Aha.  That sounds cool.  I buy.

  * NB that I am (separately) wanting to make some inlining happen in the
 gentle phase too...So the no-eta thing should depend on sm_inline rather
 than on the phase.  That makes the reasoning clearer too.

  * Rather than muttering about PAPs, perhaps e can simply switch off eta-
 expansion ''altogether'' under these conditions?

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


More information about the ghc-tickets mailing list