[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