[GHC] #14637: Simplifier Ticks Exhausted when compiling with profiling

GHC ghc-devs at haskell.org
Wed Jan 24 21:14:55 UTC 2018


#14637: Simplifier Ticks Exhausted when compiling with profiling
-------------------------------------+-------------------------------------
        Reporter:  cfhammill         |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.2.2
      Resolution:                    |             Keywords:
Operating System:  Linux             |         Architecture:  x86_64
 Type of failure:  Compile-time      |  (amd64)
  crash or panic                     |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by niteria):

 Things appear to be growing exponentially:
 {{{
 SIZE 1
 Result size of Desugar (before optimization) = {terms: 158, types: 621,
 coercions: 257, joins: 0/19}
 Result size of Desugar (after optimization) = {terms: 133, types: 370,
 coercions: 150, joins: 0/4}
 Result size of Simplifier iteration=1 = {terms: 205, types: 466,
 coercions: 81, joins: 0/4}
 Total ticks:     222
 SIZE 2
 Result size of Desugar (before optimization) = {terms: 175, types: 903,
 coercions: 463, joins: 0/25}
 Result size of Desugar (after optimization) = {terms: 144, types: 544,
 coercions: 345, joins: 0/7}
 Result size of Simplifier iteration=1 = {terms: 411, types: 3,242,
 coercions: 1,533, joins: 0/32}
 Total ticks:     454
 SIZE 3
 Result size of Desugar (before optimization) = {terms: 198, types: 1,358,
 coercions: 823, joins: 0/33}
 Result size of Desugar (after optimization) = {terms: 159, types: 845,
 coercions: 691, joins: 0/11}
 Result size of Simplifier iteration=1 = {terms: 705, types: 8,184,
 coercions: 3,826, joins: 0/67}
 Total ticks:     1360
 SIZE 4
 Result size of Desugar (before optimization) = {terms: 227, types: 2,029,
 coercions: 1,398, joins: 0/43}
 Result size of Desugar (after optimization) = {terms: 178, types: 1,303,
 coercions: 1,248, joins: 0/16}
 Result size of Simplifier iteration=1 = {terms: 1,363, types: 20,717,
 coercions: 10,083, joins: 0/145}
 Total ticks:     4986
 SIZE 5
 Result size of Desugar (before optimization) = {terms: 262, types: 2,959,
 coercions: 2,269, joins: 0/55}
 Result size of Desugar (after optimization) = {terms: 201, types: 1,948,
 coercions: 2,096, joins: 0/22}
 Result size of Simplifier iteration=1 = {terms: 2,785, types: 50,660,
 coercions: 25,205, joins: 0/313}
 Total ticks:     9535
 SIZE 6
 Result size of Desugar (before optimization) = {terms: 303, types: 4,191,
 coercions: 3,525, joins: 0/69}
 Result size of Desugar (after optimization) = {terms: 228, types: 2,810,
 coercions: 3,323, joins: 0/29}
 Result size of Simplifier iteration=1 = {terms: 5,851, types: 120,950,
 coercions: 60,893, joins: 0/673}
 Total ticks:     18885
 SIZE 7
 Result size of Desugar (before optimization) = {terms: 350, types: 5,768,
 coercions: 5,267, joins: 0/85}
 Result size of Desugar (after optimization) = {terms: 259, types: 3,919,
 coercions: 5,029, joins: 0/37}
 Result size of Simplifier iteration=1 = {terms: 13,977, types: 330,419,
 coercions: 199,879, joins: 0/1,505}
 Total ticks:     38957
 SIZE 8
 Result size of Desugar (before optimization) = {terms: 403, types: 7,733,
 coercions: 7,608, joins: 0/103}
 Result size of Desugar (after optimization) = {terms: 294, types: 5,305,
 coercions: 7,326, joins: 0/46}
 Result size of Simplifier iteration=1 = {terms: 30,779, types: 795,941,
 coercions: 499,205, joins: 0/3,233}
 Total ticks:     82839
 SIZE 9
 Result size of Desugar (before optimization) = {terms: 462, types: 10,129,
 coercions: 10,673, joins: 0/123}
 Result size of Desugar (after optimization) = {terms: 333, types: 6,998,
 coercions: 10,338, joins: 0/56}
 Result size of Simplifier iteration=1 = {terms: 60,193, types: 1,647,410,
 coercions: 937,457, joins: 0/6,881}
 Total ticks:     179203
 }}}

 If we don't run out of ticks the simplifier manages to beat down the sizes
 considerably (see attached `results-all`).

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


More information about the ghc-tickets mailing list