[GHC] #10818: GHC 7.10.2 takes much longer to compile some packages

GHC ghc-devs at haskell.org
Fri Apr 14 20:22:08 UTC 2017


#10818: GHC 7.10.2 takes much longer to compile some packages
-------------------------------------+-------------------------------------
        Reporter:  kazu-yamamoto     |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  high              |            Milestone:
       Component:  Compiler          |              Version:  7.10.2
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  performance bug                    |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by dfeuer):

 No, the program doesn't say `-fspecialise-aggressively`. `-dshow-passes`
 indicates that everything stays the same up until specialization, with
 `terms: 2,528, types: 2,420, coercions: 214`. In specialization, it
 previously rose to `terms: 2,601, types: 2,487, coercions: 214`, but after
 the change instead jumps to `terms: 3,468, types: 3,731, coercions: 214`.
 Looking at `-ddump-rules`, the difference is pretty dramatic. Before, we
 had just

 {{{
 "SPEC Control.Monad.when @ (Text.Appar.Parser.MkParser GHC.Base.String)"
 [ALWAYS]
     forall ($dMonad :: Monad (MkParser String)).
       when @ (MkParser String) $dMonad
       = $swhen
 }}}

 After the change, we have many, many rules (I'll attach them). While the
 specializations all look fairly reasonable to me, I'm not sure we really
 want quite that many by default.

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


More information about the ghc-tickets mailing list