[GHC] #7198: New codegen more than doubles compile time of T3294

GHC ghc-devs at haskell.org
Wed Mar 23 08:58:24 UTC 2016


#7198: New codegen more than doubles compile time of T3294
-------------------------------------+-------------------------------------
        Reporter:  simonmar          |                Owner:  simonmar
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  7.4.2
  (CodeGen)                          |
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  performance bug                    |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #4258             |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by simonmar):

 The basic problem here is that
 * The Stg->Cmm code generator generates suboptimal code
 * The `CmmSink` pass would mostly optimise it away, but it is only run at
 -O.
 * The extra code is hurting compile time
 * The old code generator generated simpler code, and thus was faster

 It's not obvious what the solution is.  We might need several improvements
 in various places.

 it's not clear whether the lets should be flattened; if so, this is the
 job of earlier phases (simplifier or CorePrep).  Flattening lets is a
 tradeoff, and I suspect the simplifier is already doing a reasonable job
 here, and has just decided not to in this case.

 In some cases I made the STG->Cmm code generator a bit more clever, so as
 to generate less code and improve compile time, even though later
 optimisation phases would have produced the same result.  I like this
 approach because it improves compile times for -O0, relying on later
 optimisation is brittle, and a few tweaks can have a big effect due to the
 regular patterns that occur in Cmm.

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


More information about the ghc-tickets mailing list