[GHC] #12150: Compile time performance degradation on code that uses undefined/error with CallStacks

GHC ghc-devs at haskell.org
Thu Jul 6 20:09:04 UTC 2017


#12150: Compile time performance degradation on code that uses undefined/error with
CallStacks
-------------------------------------+-------------------------------------
        Reporter:  thomie            |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  high              |            Milestone:  8.2.2
       Component:  Compiler          |              Version:  8.0.1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  performance bug                    |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #10844            |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by dfeuer):

 I see that GHC HEAD now optimizes the gigantic redundant `case` away
 (eventually), but it still goes more slowly than we'd like. For example,
 in GHC 7.10, `-ddump-spec` shows that all the redundant crud is already
 gone, whereas on GHC 8.3, it is still there then. I would like to
 understand how 7.10 gets rid of the extra cases before demand analysis. Is
 it using the fact that there are nested matches on the same constructor?
 Does that test not ignore type arguments it should?

 Interestingly, it seems that at a certain point `bool` actually gets
 inlined at a bunch of call sites (some in normal terms; some in
 unfoldings), but not all.

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


More information about the ghc-tickets mailing list