all.T 59.4 KB
Newer Older
thomie's avatar
thomie committed
1 2 3
# Tests that call 'compiler_stats_num_field' are skipped when debugging is on.
# See testsuite/driver/testlib.py.

4
def no_lint(name, opts):
5
   opts.compiler_always_flags = \
6
       [opt for opt in opts.compiler_always_flags if opt != '-dcore-lint' and opt != '-dcmm-lint']
7

Simon Marlow's avatar
Simon Marlow committed
8
setTestOpts(no_lint)
9 10


Simon Marlow's avatar
Simon Marlow committed
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
# Note [residency]
#
# Residency (peak_megabytes_allocated and max_bytes_used) is sensitive
# to when the major GC runs, which makes it inherently inaccurate.
# Sometime an innocuous change somewhere can shift things around such
# that the samples occur at a different time, and the residency
# appears to change (up or down) when the underlying profile hasn't
# really changed.
#
# However, please don't just ignore changes in residency.  If you see
# a change in one of these figures, please check whether it is real or
# not as follows:
#
#  * Run the test with old and new compilers, adding +RTS -h -i0.01
#    (you don't need to compile anything for profiling or enable profiling
#    libraries to get a heap profile).
#  * view the heap profiles, read off the maximum residency.  If it has
#    really changed, then you know there's an issue.

Simon Marlow's avatar
Simon Marlow committed
30
test('T1969',
31
     [# expect_broken(12437),
32
      compiler_stats_num_field('peak_megabytes_allocated', # Note [residency]
33
          [(wordsize(32), 30, 15),
34 35 36 37 38
             # 2010-05-17 14 (x86/Windows)
             #            15 (x86/OS X)
             #            19 (x86/OS X)
             # 2013-02-10 13 (x86/Windows)
             # 2013-02-10 14 (x86/OSX)
39
             # 2013-11-13 17 (x86/Windows, 64bit machine)
40
             # 2015-07-11 21 (x86/Linux, 64bit machine) use +RTS -G1
41
             # 2016-04-06 30 (x86/Linux, 64bit machine)
42
           (wordsize(64), 78, 20)]),
43 44 45 46
             #            28 (amd64/Linux)
             #            34 (amd64/Linux)
             # 2012-09-20 23 (amd64/Linux)
             # 2012-10-03 25 (amd64/Linux if .hi exists)
47
             # 2013-02-13 23, but unstable so increased to 10% range
Simon Peyton Jones's avatar
Simon Peyton Jones committed
48
             # 2013-02-13 27, very unstable!
Joachim Breitner's avatar
Joachim Breitner committed
49
             # 2014-09-10 29 (amd64/Linux) post-AMP-cleanup
50 51
             # 2013-09-11 30, 10 (amd64/Linux)
             # 2013-09-11 30, 15 (adapt to Phab CI)
52
             # 2015-06-03 41, (amd64/Linux) use +RTS -G1
53
             # 2015-10-28 55, (amd64/Linux) emit Typeable at definition site
54 55
             # 2016-10-20 68, (amd64/Linux) allow top-level string literals
             #                See the comment 16 on #8472.
Ben Gamari's avatar
Ben Gamari committed
56
             # 2017-02-17 83  (amd64/Linux) Type-indexed Typeable
57
             # 2017-03-31 61  (amd64/Linux) Fix memory leak in simplifier
58
             # 2018-01-25 78  (amd64/Linux) Use CoreExpr for EvTerm
59
      compiler_stats_num_field('max_bytes_used',
60
          [(platform('i386-unknown-mingw32'), 5719436, 20),
61 62
                                 # 2010-05-17 5717704 (x86/Windows)
                                 # 2013-02-10 5159748 (x86/Windows)
63
                                 # 2013-02-10 5030080 (x86/Windows)
64
                                 # 2013-11-13 7295012 (x86/Windows, 64bit machine)
65
                                 # 2014-04-24 5719436 (x86/Windows, 64bit machine)
66
           (wordsize(32), 9418680, 1),
67 68
             #            6707308 (x86/OS X)
             # 2009-12-31 6149572 (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
69
             # 2014-01-22 6429864 (x86/Linux)
70
             # 2014-06-29 5949188 (x86/Linux)
71 72
             # 2015-07-11 6241108 (x86/Linux, 64-bit machine) use +RTS -G1
             # 2016-04-06 9093608 (x86/Linux, 64-bit machine)
73
             # 2017-03-24 9261052 (x86/Linux, 64-bit machine)
74
             # 2017-04-06 9418680 (x86/Linux, 64-bit machine)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
75

David Feuer's avatar
David Feuer committed
76
           (wordsize(64), 19199872, 15)]),
Joachim Breitner's avatar
Joachim Breitner committed
77
             # 2014-09-10 10463640, 10  # post-AMP-update (somewhat stabelish)
Austin Seipp's avatar
Austin Seipp committed
78
               # looks like the peak is around ~10M, but we're
79 80 81
               # unlikely to GC exactly on the peak.
               # varies quite a lot with CLEANUP and BINDIST,
               # hence 10% range.
Simon Marlow's avatar
Simon Marlow committed
82
               # See Note [residency] to get an accurate view.
83 84
             # 2014-09-14  9684256, 10 # try to lower it a bit more to match Phab's CI
             # 2014-11-03 10584344,    # ghcspeed reports higher numbers consistently
Ben Gamari's avatar
Ben Gamari committed
85
             # 2015-07-11 11670120 (amd64/Linux)
86
             # 2015-10-28 15017528 (amd64/Linux) emit typeable at definition site
Ben Gamari's avatar
Ben Gamari committed
87
             # 2016-10-12 17285216 (amd64/Linux) it's not entirely clear why
lukemaurer's avatar
lukemaurer committed
88
             # 2017-02-01 19924328 (amd64/Linux) Join points (#12988)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
89
             # 2017-02-14 16393848 Early inline patch
90
             # 2017-03-31 16679176 Fix memory leak in simplifier
David Feuer's avatar
David Feuer committed
91
             # 2017-08-25 19199872 Refactor the Mighty Simplifier
Simon Peyton Jones's avatar
Simon Peyton Jones committed
92

93
      compiler_stats_num_field('bytes allocated',
94
          [(platform('i386-unknown-mingw32'), 301784492, 5),
95 96
                                 #            215582916 (x86/Windows)
                                 # 2012-10-29 298921816 (x86/Windows)
97
                                 # 2013-02-10 310633884 (x86/Windows)
98
                                 # 2013-11-13 317975916 (x86/Windows, 64bit machine)
99
                                 # 2014-04-04 301784492 (x86/Windows, 64bit machine)
100
           (wordsize(32), 324586096, 1),
101 102 103 104
             #            221667908 (x86/OS X)
             #            274932264 (x86/Linux)
             # 2012-10-08 303930948 (x86/Linux, new codegen)
             # 2013-02-10 322937684 (x86/OSX)
Austin Seipp's avatar
Austin Seipp committed
105
             # 2014-01-22 316103268 (x86/Linux)
106
             # 2014-06-29 303300692 (x86/Linux)
107
             # 2015-07-11 288699104 (x86/Linux, 64-bit machine) use +RTS -G1
108
             # 2016-04-06 344730660 (x86/Linux, 64-bit machine)
109
             # 2017-03-24 324586096 (x86/Linux, 64-bit machine)
110
           (wordsize(64), 659863176, 5)]),
Ben Gamari's avatar
Ben Gamari committed
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
             # 2009-11-17 434845560 (amd64/Linux)
             # 2009-12-08 459776680 (amd64/Linux)
             # 2010-05-17 519377728 (amd64/Linux)
             # 2011-08-05 561382568 (amd64/OS X)
             # 2012-07-16 589168872 (amd64/Linux)
             # 2012-07-20 595936240 (amd64/Linux)
             # 2012-08-23 606230880 (amd64/Linux)
             # 2012-08-29 633334184 (amd64/Linux) new codegen
             # 2012-09-18 641959976 (amd64/Linux)
             # 2012-10-19 661832592 (amd64/Linux) -fPIC turned on
             # 2012-10-23 642594312 (amd64/Linux) -fPIC turned off again
             # 2012-11-12 658786936 (amd64/Linux) UNKNOWN REASON
             # 2013-91-17 667160192 (x86_64/Linux) new demand analyser
             # 2013-10-18 698612512 (x86_64/Linux) fix for #8456
             # 2014-02-10 660922376 (x86_64/Linux) call arity analysis
             # 2014-07-17 651626680 (x86_64/Linux) roundabout update
             # 2014-09-10 630299456 (x86_64/Linux) post-AMP-cleanup
             # 2015-06-03 581460896 (x86_64/Linux) use +RTS -G1
             # 2015-10-28 695430728 (x86_64/Linux) emit Typeable at definition site
             # 2015-10-28 756138176 (x86_64/Linux) inst-decl defaults go via typechecker (#12220)
             # 2017-02-17 831733376 (x86_64/Linux) Type-indexed Typeable
Simon Peyton Jones's avatar
Simon Peyton Jones committed
132
             # 2017-02-25 695354904 (x86_64/Linux) Early inlining patch
133
             # 2017-04-21 659863176 (x86_64/Linux) Unknown
134
      only_ways(['normal']),
135

136
      extra_hc_opts('-dcore-lint -static'),
137 138
          # Leave -dcore-lint on for this one test, so that we have something
          # that will catch a regression in -dcore-lint performance.
139 140

      # Use `+RTS -G1` for more stable residency measurements. Note [residency].
141
      extra_hc_opts('+RTS -G1 -RTS')
Simon Marlow's avatar
Simon Marlow committed
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
      ],
     compile,
     [''])

# This one tests for the space leak in the native code generator,
# where it holds onto the entire asm output until the end.  The space
# leak reappears from time to time, so it's a good idea to have a test
# for it.  The residency of this test will jump by 10MB to 40MB or so
# on x86-64 if the space leak appears.

# Only run this one if we have an NCG:
if 'optasm' in config.compile_ways:
   conf_3294 = only_ways(['normal'])
else:
   conf_3294 = skip

test('T3294',
159
     [
Simon Marlow's avatar
Simon Marlow committed
160
      compiler_stats_num_field('max_bytes_used', # Note [residency]
161
          [(wordsize(32), 28686588, 15),
162 163 164 165
             #            17725476 (x86/OS X)
             #            14593500 (Windows)
             # 2013-02-10 20651576 (x86/Windows)
             # 2013-02-10 20772984 (x86/OSX)
166
             # 2013-11-13 24009436 (x86/Windows, 64bit machine)
167
             # 2014-04-24 19882188 (x86/Windows, 64bit machine)
168
             # 2014-12-22 26525384 (x86/Windows) Increase due to silent superclasses?
169
             # 2015-07-11 43196344 (x86/Linux, 64-bit machine) use +RTS -G1
170
             # 2016-04-06 28686588 (x86/Linux, 64-bit machine)
171

172
           (wordsize(64), 34050960, 20)]),
173 174 175 176 177 178 179 180 181
             # prev:           25753192 (amd64/Linux)
             # 29/08/2012:     37724352 (amd64/Linux)
             #  (increase due to new codegen, see #7198)
             # 13/13/2012:     44894544 (amd64/Linux)
             #  (reason for increase unknown)
             # 15/5/2013:      36904752  (amd64/Linux)
             #  (reason for decrease unknown)
             # 29/5/2013:      43224080  (amd64/Linux)
             #  (reason for increase back to earlier value unknown)
182 183
             # 2014-07-14:     36670800  (amd64/Linux)
             #  (reason unknown, setting expected value somewhere in between)
184 185
             # 2015-01-22:     45000000  (amd64/Linux)
             #  varies between 40959592 and 52914488... increasing to +-20%
186 187
             # 2015-10-28:     50367248  (amd64/Linux)
             #  D757: emit Typeable instances at site of type definition
thomie's avatar
thomie committed
188 189
             # 2016-07-11:     54609256  (Windows) before fix for #12227
             # 2016-07-11:     52992688  (Windows) after fix for #12227
Ben Gamari's avatar
Ben Gamari committed
190
             # 2017-02-17:     63131248  (amd64/Linux) Type indexed Typeable
191
             # 2017-05-14:     34050960  (amd64/Linux) Two-pass CmmLayoutStack
192

193
      compiler_stats_num_field('bytes allocated',
194
          [(wordsize(32), 1377050640, 5),
195 196 197
           # previous:     815479800  (x86/Linux)
           # (^ increase due to new codegen, see #7198)
           # 2012-10-08:  1373514844 (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
198 199
           # 2013-11-13: 1478325844  (x86/Windows, 64bit machine)
           # 2014-01-12: 1565185140  (x86/Linux)
200
           # 2013-04-04: 1377050640  (x86/Windows, 64bit machine)
Tobias Dammers's avatar
Tobias Dammers committed
201
           (wordsize(64), 1858491504, 5)]),
202 203 204 205
            # old:        1357587088 (amd64/Linux)
            # 29/08/2012: 2961778696 (amd64/Linux)
            # (^ increase due to new codegen, see #7198)
            # 18/09/2012: 2717327208 (amd64/Linux)
206 207 208
            # 08/06/2013: 2901451552 (amd64/Linux) (reason unknown)
            # 12/12/2013: 3083825616 (amd64/Linux) (reason unknown)
            # 18/02/2014: 2897630040 (amd64/Linux) (call arity improvements)
209
            # 12/03/2014: 2705289664 (amd64/Linux) (more call arity improvements)
210
            # 2014-17-07: 2671595512 (amd64/Linux) (round-about update)
Joachim Breitner's avatar
Joachim Breitner committed
211
            # 2014-09-10: 2709595808 (amd64/Linux) post-AMP cleanup
thomie's avatar
thomie committed
212 213
            # 2016-07-11: 2664479936 (Windows) before fix for #12227
            # 2016-07-11: 2739731144 (Windows) after fix for #12227 (ignoring)
214
            # 2017-02-17: 2758641264 (amd64/Linux) (Type indexed Typeable)
215
            # 2017-05-14: 2253557280 (amd64/Linux) Two-pass CmmLayoutStack
Tobias Dammers's avatar
Tobias Dammers committed
216
            # 2017-10-24: 1858491504 (amd64/Linux) Improved linear regAlloc
217 218 219
      conf_3294,

      # Use `+RTS -G1` for more stable residency measurements. Note [residency].
220
      extra_hc_opts('+RTS -G1 -RTS')
Simon Marlow's avatar
Simon Marlow committed
221 222 223
      ],
     compile,
     [''])
Ian Lynagh's avatar
Ian Lynagh committed
224

Simon Peyton Jones's avatar
Simon Peyton Jones committed
225
test('T4801',
226 227
     [ # expect_broken(5224),
       # temporarily unbroken (#5227)
228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245
###################################
# deactivated for now, as this metric became too volatile recently
#      compiler_stats_num_field('peak_megabytes_allocated',# Note [residency]
#          [(platform('x86_64-apple-darwin'), 70, 1),
#                           # expected value: 58 (amd64/OS X)
#                           # 13/01/2014 - 70
#           (wordsize(32), 30, 20),
#           (wordsize(64), 48, 20)]),
#            # prev:       50 (amd64/Linux)
#            # 19/10/2012: 64 (amd64/Linux)
#            #                (^ REASON UNKNOWN!)
#            # 12/11/2012: 49 (amd64/Linux)
#            #                (^ REASON UNKNOWN!)
#            # 28/8/13:    60 (amd64/Linux)
#            #                (^ REASON UNKNOWN!)
#            # 2014-09-10: 55 post-AMP-cleanup
#            # 2014-10-08: 62 (jumps between 55 and 71 observed -- GC tipping point?)
#            # 2014-10-13: 48 stricter seqDmdType
Simon Marlow's avatar
Simon Marlow committed
246

247
      compiler_stats_num_field('bytes allocated',
248
          [(platform('x86_64-apple-darwin'), 417302064, 10),
249 250
           # prev:       510938976 (amd64/OS X):
           # 2015-12-11: 465653312 (amd64/OS X) Update, bump tolerance to +/-10%
251
           # 2017-03-24: 417302064 (amd64/OS X) Correlated with Linux improvement
Simon Marlow's avatar
Simon Marlow committed
252

253
           (wordsize(32), 199856388, 10),
Austin Seipp's avatar
Austin Seipp committed
254 255
           # prev:        185669232 (x86/OSX)
           # 2014-01-22:  211198056 (x86/Linux)
256
           # 2014-09-03:  185242032 (Windows laptop)
257
           # 2014-12-01:  203962148 (Windows laptop)
258
           # 2016-04-06:  239556572 (x86/Linux)
259
           # 2017-03-24:  199856388 (x86/Linux)
260
           (wordsize(64), 388898280, 10)]),
261 262 263
            # prev:       360243576 (amd64/Linux)
            # 19/10/2012: 447190832 (amd64/Linux) (-fPIC turned on)
            # 19/10/2012: 392409984 (amd64/Linux) (-fPIC turned off)
Joachim Breitner's avatar
Joachim Breitner committed
264
            # 2014-04-08: 362939272 (amd64/Linux) cumulation of various smaller improvements over recent commits
Joachim Breitner's avatar
Joachim Breitner committed
265
            # 2014-10-08: 382056344 (amd64/Linux) stricter foldr2 488e95b
266
            # 2015-10-28: 434278248 (amd64/Linux) emit Typeable at definition site
267
            # 2016-10-19: 388898280 (amd64/Linux) Refactor traceRn interface (#12617)
Simon Marlow's avatar
Simon Marlow committed
268

269
###################################
270
# deactivated for now, as this metric became too volatile recently
271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292
#
#     compiler_stats_num_field('max_bytes_used',
#         [(platform('x86_64-apple-darwin'), 25145320, 5),
#          (wordsize(32), 11829000, 15),
#            #              9651948 (x86/OSX)
#            #              10290952 (windows)
#            # 2013-02-10   11071060 (x86/Windows)
#            # 2013-02-10:  11207828 (x86/OSX)
#            # (some date): 11139444
#            # 2013-11-13:  11829000 (x86/Windows, 64bit machine)
#          (wordsize(64), 19296544, 15)]),
#               # prev:       20486256 (amd64/OS X)
#               # 30/08/2012: 17305600--20391920 (varies a lot)
#               # 19/10/2012: 26882576 (-fPIC turned on)
#               # 19/10/2012: 18619912 (-fPIC turned off)
#               # 24/12/2012: 21657520 (perhaps gc sampling time wibbles?)
#               # 10/01/2014: 25166280
#               # 13/01/2014: 22646000 (mostly due to #8647)
#               # 18/02/2014: 25002136 (call arity analysis changes)
#               # 12/05/2014: 25002136 (specialisation and inlining changes)
#               # 10/09/2014: 19296544, 10 (post-AMP-cleanup)
#               # 14/09/2014: 19585456, 15 (adapt to Phab CI env)
293
       only_ways(['normal']),
294 295 296
       extra_hc_opts('-static'),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
297
       extra_hc_opts('+RTS -G1 -RTS')
298
       ],
Simon Peyton Jones's avatar
Simon Peyton Jones committed
299 300 301
     compile,
     [''])

Ian Lynagh's avatar
Ian Lynagh committed
302
test('T3064',
303
     [compiler_stats_num_field('peak_megabytes_allocated',# Note [residency]
304
          [(wordsize(32), 36, 20),
305 306
            # expected value: 14 (x86/Linux 28-06-2012):
            # 2013-11-13:     18 (x86/Windows, 64bit machine)
Austin Seipp's avatar
Austin Seipp committed
307
            # 2014-01-22:     23 (x86/Linux)
308
            # 2014-12-22:     23 (x86/Linux) death to silent superclasses
309
            # 2015-07-11:     28 (x86/Linux, 64-bit machine) use +RTS -G1
310
            # 2017-04-06:     36 (x86/Linux, 64-bit machine) it's unclear
311

312
           (wordsize(64), 66, 20)]),
313 314
            # (amd64/Linux):            18
            # (amd64/Linux) 2012-02-07: 26
315
            # (amd64/Linux) 2013-02-12: 23; increased range to 10%
316
            # (amd64/Linux) 2013-04-03: 26
Austin Seipp's avatar
Austin Seipp committed
317
            # (amd64/Linux) 2013-09-11: 30; result of AMP patch
318
            # Increased range to 20%.  peak-usage varies from 22 to 26,
319
            #  depending on whether the old .hi file exists
320
            # (amd64/Linux) 2013-09-11: 37; better arity analysis (weird)
321
            # (amd64/Linux) (09/09/2014): 42, AMP changes (larger interfaces, more loading)
322
            # (amd64/Linux) 2014-10-13: 38: Stricter seqDmdType
323
            # (amd64/Linux) 2014-12-22: 27: death to silent superclasses
324
            # (amd64/Linux) 2015-01-22: 32: Varies from 30 to 34, at least here.
325
            # (amd64/Linux) 2015-06-03: 54: use +RTS -G1
326
            # (amd64/Linux) 2016-10-25: 66: Presumably creep
327

328
      compiler_stats_num_field('bytes allocated',
329
          [(wordsize(32), 134044092, 10),
330
            # 2011-06-28: 56380288  (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
331
            # 2012-10-30: 111189536 (x86/Windows)
332
            # 2013-11-13: 146626504 (x86/Windows, 64bit machine)
Austin Seipp's avatar
Austin Seipp committed
333
            # 2014-01-22: 162457940 (x86/Linux)
334
            # 2014-12-01: 162457940 (Windows)
335
            # 2014-12-22: 122836340 (Windows) Death to silent superclasses
336
            # 2016-04-06: 153261024 (x86/Linux) probably wildcard refactor
337
            # 2017-03-24: 134044092 (x86/Linux, 64-bit machine) Update
338

339
           (wordsize(64), 258505536, 5)]),
340 341 342 343 344 345 346 347
            # (amd64/Linux) (2011-06-28):  73259544
            # (amd64/Linux) (2013-02-07): 224798696
            # (amd64/Linux) (2013-08-02): 236404384, increase from roles
            # (amd64/Linux) (2013-09-11): 290165632, increase from AMP warnings
            # (amd64/Linux) (2013-11-22): 308300448, GND via Coercible and counters for constraints solving
            # (amd64/Linux) (2013-12-02): 329795912, Coercible refactor
            # (amd64/Linux) (2014-02-11): 308422280, optimize Coercions in simpleOptExpr
            # (amd64/Linux) (2014-05-23): 324022680, unknown cause
348
            # (amd64/Linux) (2014-07-17): 332702112, general round of updates
349
            # (amd64/Linux) (2014-08-29): 313638592, w/w for INLINABLE things
350 351 352 353 354
            # (amd64/Linux) (2014-09-09): 407416464, AMP changes (larger interfaces, more loading)
            # (amd64/Linux) (2014-09-14): 385145080, BPP changes (more NoImplicitPrelude in base)
            # (amd64/Linux) (2014-12-10): 363103840, improvements in constraint solver
            # (Mac)         (2014-12-18): 350418600, improvements to flattener
            # (amd64/Linux) (2014-12-22): 243670824, Ha! Death to superclass constraints, makes
355
            #                                        much less code for Monad instances
356
            # (amd64/Linux) (2015-12-01): 264952256, Regression due to Simon's wildcard refactor
357
            #                                        Tracked as #11151.
358
            # (amd64/Linux) (2015-12-11): 304344936, Regression due to TypeInType
359
            #                                        Tracked as #11196
360
            # (amd64/Linux) (2016-04-15): 287460128  Improvement due to using coercionKind instead
361
            #                                        of zonkTcType (Trac #11882)
362
            # (amd64/Darwin) (2017-01-23): 306222424 Presumably creep from recent changes (Typeable?)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
363
            # (amd64/Linux) (2017-02-14): 259815560  Early inline patch: 9% improvement
364
            # (amd64/Linux) (2017-03-31): 265950920  Fix memory leak in simplifier
365
            # (amd64/Linux) (2017-05-01): 281509496  Avoid excessive space usage from unfoldings in CoreTidy
366
            # (amd64/Linux) (2017-05-01): 258505536  I think this is improvement in coercionKind e4ab65bd
367

368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391
###################################
# deactivated for now, as this metric became too volatile recently
#
#      compiler_stats_num_field('max_bytes_used',
#          [(wordsize(32), 11202304, 20),
#            # 2011-06-28:  2247016 (x86/Linux) (28/6/2011):
#            #(some date):  5511604
#            # 2013-11-13:  7218200 (x86/Windows, 64bit machine)
#            # 2014-04-04: 11202304 (x86/Windows, 64bit machine)
#           (wordsize(64), 13251728, 20)]),
#            # (amd64/Linux, intree) (28/06/2011):  4032024
#            # (amd64/Linux, intree) (07/02/2013):  9819288
#            # (amd64/Linux)         (14/02/2013):  8687360
#            # (amd64/Linux)         (18/02/2013):  9397488
#            # (amd64/Linux)         (02/08/2013): 10742536, increase from roles
#            # (amd64/Linux)         (19/08/2013): 9211816,  decrease apparently from better eta reduction
#            # (amd64/Linux)         (11/09/2013): 12000480, increase from AMP warnings
#            #                                     933cdf15a2d85229d3df04b437da31fdfbf4961f
#            # (amd64/Linux)         (22/11/2013): 16266992, GND via Coercible and counters for constraints solving
#            # (amd64/Linux)         (12/12/2013): 19821544, better One shot analysis
#            # (amd64/Linux)         (09/09/2014): 24357392, AMP changes (larger interfaces, more loading)
#            # (amd64/Linux)         (14/09/2014): 16053888, BPP changes (more NoImplicitPrelude in base)
#            # (amd64/Linux)         (19/09/2014): 18744992, unknown
#            # (amd64/Linux)         2014-10-13:   13251728, Stricter seqDmdType
392

393 394 395
       only_ways(['normal']),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
396
       extra_hc_opts('+RTS -G1 -RTS')
Ian Lynagh's avatar
Ian Lynagh committed
397 398 399 400
      ],
     compile,
     [''])

Ian Lynagh's avatar
Ian Lynagh committed
401 402 403 404 405
test('T4007',
     normal,
     run_command,
     ['$MAKE -s --no-print-directory T4007'])

406
test('T5030',
407
     [compiler_stats_num_field('bytes allocated',
408
          [(wordsize(32), 345668088, 10),
409 410
           # previous:    196457520
           # 2012-10-08:  259547660 (x86/Linux, new codegen)
411
           # 2013-11-21:  198573456 (x86 Windows, 64 bit machine)
412
           # 2014-12-10:  227205560 constraint solver got worse again; more aggressive solving
413
           #                        of family-applications leads to less sharing, I think
414
           # 2015-07-11:  201882912 reason unknown
415
           # 2016-04-06:  345668088 likely TypeInType
416

417
           (wordsize(64), 794426536, 10)]),
418 419 420
             # Previously 530000000 (+/- 10%)
             # 17/1/13:   602993184  (x86_64/Linux)
             #            (new demand analyser)
421 422
             # 2013-06-08 538467496  (x86_64/Linux)
             # ^ reason unknown
eir@cis.upenn.edu's avatar
eir@cis.upenn.edu committed
423 424
             # 2013-08-02 454498592  (amd64/Linux)
             # decrease from more aggressive coercion optimisations from roles
425 426
             # 2013-11-12 397672152  (amd64/Linux)
             # big decrease following better CSE and arity
427 428
             # 2014-07-17 409314320  (amd64/Linux)
             # general round of updates
Joachim Breitner's avatar
Joachim Breitner committed
429
             # 2014-09-10 385152728  post-AMP-cleanup
430
             # 2014-12-08 340969128  constraint solver perf improvements (esp kick-out)
431
             # 2014-12-10 449042120  constraint solver got worse again; more aggressive solving
432
             #                          of family-applications leads to less sharing, I think
433
             # 2015-03-17 403932600  tweak to solver algorithm
434
             # 2015-12-11 653710960  TypeInType (see #11196)
435 436 437
             # 2016-10-17 794426536  20% big increase following
             #                       31621b12 * A collection of type-inference refactorings.
             #                       See ticket for more info
438

439 440 441
       only_ways(['normal'])
      ],
     compile,
442
     ['-freduction-depth=300'])
443

Simon Peyton Jones's avatar
Simon Peyton Jones committed
444
test('T5631',
445
     [compiler_stats_num_field('bytes allocated',
446
          [(wordsize(32), 570137436, 10),
447
        # expected value: 392904228 (x86/Linux)
448
        # 2014-04-04:     346389856 (x86 Windows, 64 bit machine)
449
        # 2014-12-01:     390199244 (Windows laptop)
450
        # 2016-04-06:     570137436 (amd64/Linux) many reasons
451
           (wordsize(64), 1106015512, 5)]),
452
        # expected value: 774595008 (amd64/Linux):
453
        # expected value: 735486328 (amd64/Linux) 2012/12/12:
454
        # expected value: 690742040 (amd64/Linux) Call Arity improvements
455
        # 2014-09-09:     739704712 (amd64/Linux) AMP changes
456
        # 2014-11-04:     776121120 (amd64/Linux) new-flatten-skolems
457
        # 2015-06-01:     812288344 (amd64/Linux) unknown cause
458 459 460
        # 2015-12-11:     1128828928 (amd64/Linux) TypeInType (see #11196)
        # 2015-12-21:     1198327544 (Mac) TypeApplications (will fix with #11196)
        # 2015-03-18:     1124068664 (Mac) optimize Unify & zonking
461
        # 2016-10-19:     1024926024 (amd64/Linux) Refactor traceRn interface (#12617)
462
        # 2016-11-10:     1077429456 (amd64/Linux) Stop -dno-debug-output suppressing -ddump-tc-trace
Ben Gamari's avatar
Ben Gamari committed
463
        # 2017-02-17:     1517484488 (amd64/Linux) Type-indexed Typeable
Ben Gamari's avatar
Ben Gamari committed
464
        # 2017-03-03:     1065147968 (amd64/Linux) Share Typeable KindReps
465
        # 2017-03-31:     1037482512 (amd64/Linux) Fix memory leak in simplifier
466 467
	# 2017-07-27:     1106015512 (Mac) Regresssion from tracking visibility in TypeEqOrigin
	#                                  should be fixed by #14037
Simon Peyton Jones's avatar
Simon Peyton Jones committed
468 469 470 471 472
       only_ways(['normal'])
      ],
     compile,
     [''])

473
test('parsing001',
474
     [compiler_stats_num_field('bytes allocated',
475 476 477
          [(wordsize(32), 232777056, 10),
        # Initial:        274000576
        # 2017-03-24:     232777056
478
           (wordsize(64), 490228304, 5)]),
479
        # expected value: 587079016 (amd64/Linux)
480
        # 2016-09-01:     581551384 (amd64/Linux) Restore w/w limit (#11565)
lukemaurer's avatar
lukemaurer committed
481
        # 2016-12-19:     493730288 (amd64/Linux) Join points (#12988)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
482
        # 2017-02-14:     463931280 Early inlining patch; acutal improvement 7%
483
        # 2017-12-11:     490228304 BlockArguments
484 485 486 487 488
       only_ways(['normal']),
      ],
     compile_fail, [''])


489 490 491
test('T783',
     [ only_ways(['normal']),  # no optimisation for this one
      # expected value: 175,569,928 (x86/Linux)
492
      compiler_stats_num_field('bytes allocated',
493
          [(wordsize(32), 225911912, 5),
494
            # 2012-10-08: 226907420 (x86/Linux)
495 496
            # 2013-02-10: 329202116 (x86/Windows)
            # 2013-02-10: 338465200 (x86/OSX)
497
            # 2014-04-04: 319179104 (x86 Windows, 64 bit machine)
498 499
            # 2014-09-03: 223377364 (Windows) better specialisation, raft of core-to-core optimisations
            # 2014-12-22: 235002220 (Windows) not sure why
500
            # 2016-04-06: 249332816 (x86/Linux, 64-bit machine)
501
            # 2017-03-24: 225911912 (x86/Linux, 64-bit machine)
502

Ben Gamari's avatar
Ben Gamari committed
503
           (wordsize(64), 481875416, 10)]),
504 505 506 507 508 509
            # prev:       349263216 (amd64/Linux)
            # 07/08/2012: 384479856 (amd64/Linux)
            # 29/08/2012: 436927840 (amd64/Linux)
            # 12/11/2012: 640324528 (amd64/Linux)
            #   (OldCmm removed: not sure why this got worse, the
            #    other perf tests remained about the same)
510 511
            # 18/10/2013: 734038080 (amd64/Linux)
            #   (fix for #8456)
512 513
            # 24/10/2013: 654804144 (amd64/Linux)
            #   (fix previous fix for #8456)
514 515
            # 2014-07-17: 640031840 (amd64/Linux)
            #   (general round of updates)
516
            # 2014-08-29: 441932632 (amd64/Linux)
517
            #   (better specialisation, raft of core-to-core optimisations)
518 519 520 521 522 523 524 525 526 527
            # 2014-08-29: 719814352 (amd64/Linux)
            #   (changed order of cmm block causes analyses to allocate much more,
            #      but the changed order is slighly better in terms of runtime, and
            #      this test seems to be an extreme outlier.)
            # 2015-05-16: 548288760 (amd64/Linux)
            #   (improved sequenceBlocks in nativeCodeGen, #10422)
            # 2015-08-07: 470738808 (amd64/Linux)
            #   (simplifying the switch plan code path for simple checks, #10677)
            # 2015-08-28: 526230456 (amd64/Linux)
            #    (D757: Emit Typeable instances at site of type definition)
Ben Gamari's avatar
Ben Gamari committed
528 529
            # 2015-12-04: 1134085384 (amd64/Linux)
            #    (D1535: Major overhaul of pattern match checker, #11162)
530 531
            # 2016-02-03: 488592288 (amd64/Linux)
            #    (D1795: Another overhaul of pattern match checker, #11374)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
532
            # 2017-02-14    436978192    Early inlining: 5% improvement
Ben Gamari's avatar
Ben Gamari committed
533
            # 2017-09-08    481875416    Unknown
Simon Peyton Jones's avatar
Simon Peyton Jones committed
534

535
      extra_hc_opts('-static')
536 537
      ],
      compile,[''])
538 539 540

test('T5321Fun',
     [ only_ways(['normal']),  # no optimisation for this one
541
       compiler_stats_num_field('bytes allocated',
542
           [(wordsize(32), 244387620, 10),
543 544 545
             # prev:       300000000
             # 2012-10-08: 344416344 x86/Linux
             #  (increase due to new codegen)
546
             # 2014-09-03: 299656164     (specialisation and inlining)
547
             # 2014-12-10: 206406188     #  Improvements in constraint solver
548
             # 2016-04-06: 279922360 x86/Linux
549 550
             # 2017-03-24: 244387620 x86/Linux (64-bit machine)

551
            (wordsize(64), 423774560, 5)])
552
             # prev:       585521080
553 554 555 556 557 558 559 560 561
             # 2012-08-29: 713385808     #  (increase due to new codegen)
             # 2013-05-15: 628341952     #  (reason for decrease unknown)
             # 2013-06-24: 694019152     #  (reason for re-increase unknown)
             # 2014-05-12: 614409344     #  (specialisation and inlining changes)
             # 2014-09-10: 601629032     #  post-AMP-cleanup
             # 2014-11-06: 541287000     #  Simon's flat-skol changes to the constraint solver
             # 2014-12-10: 408110888     #  Improvements in constraint solver
             # 2014-12-16: 429921312     #  Flattener parameterized over roles
             # 2015-08-10: 509921312
562 563
             #  (undefined now takes an implicit parameter and GHC -O0 does
             #  not recognize that the application is bottom)
564 565
             # 2015-12-11: 565883176     #  TypeInType (see #11196)
             # 2017-01-06: 497356688     #  Small coercion optimisations
566 567
                                         #  The actual decrease was only 2%; earlier
                                         #    commits had drifted down
568
             # 2017-01-22: 525895608     #  Allow top-level string literals in Core. I'm not
569 570 571 572 573
                                         #    convinced that this patch is
                                         #    responsible for all of this
                                         #    change, however. Namely I am
                                         #    quite skeptical of the downward
                                         #    "drift" reported above
574 575
             # 2017-01-31: 498135752     #  Join points (#12988)
             # 2017-02-23: 524706256     #  Type-indexed Typeable? (on Darwin)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
576
             # 2017-02-25: 488295304     #  Early inlining patch
577
             # 2017-05-14: 449577856     #  (amd64/Linxu) Two-pass CmmLayoutStack
578
             # 2017-12-13: 423774560     #  (amd64/Linxu) Typechecker improvements
579 580 581 582 583
      ],
      compile,[''])

test('T5321FD',
     [ only_ways(['normal']),  # no optimisation for this one
584
      compiler_stats_num_field('bytes allocated',
585
          [(wordsize(32), 250757460, 10),
586 587 588
            # prev:       213380256
            # 2012-10-08: 240302920 (x86/Linux)
            #  (increase due to new codegen)
589 590
            # 2014-07-31: 211699816 (Windows) (-11%)
            #  (due to better optCoercion, 5e7406d9, #9233)
591
            # 2016-04-06: 250757460 (x86/Linux)
592

593
           (wordsize(64), 415136648, 10)])
594 595 596
            # prev:       418306336
            # 29/08/2012: 492905640
            #  (increase due to new codegen)
597
            # 15/05/2013: 406039584
598
            #  (reason for decrease unknown)
599
            # 08/06/2013: 476497048
600
            #  (reason for increase unknown)
601 602 603 604
            # before 2014-07-17: 441997096
            #  (with -8%, still in range, hence cause not known)
            # 2014-07-17: 426960992 (-11% of previous value)
            #  (due to better optCoercion, 5e7406d9, #9233)
605 606
            # 2014-10-08  410895536
            #  (various changes; biggest improvements due to 949ad67 and FastString package ids)
607 608 609
            # 2015-08-10: 470895536
            #  (undefined now takes an implicit parameter and GHC -O0 does
            #  not recognize that the application is bottom)
610 611
            # 2015-10-28: 532365376
            #  D757: emit Typeable instances at site of type definition
612 613
            # 2016-07-16: 477840432
            #  Optimize handling of built-in OccNames
614
            # 2017-05-14: 415136648 (amd64/Linux) Two-pass CmmLayoutStack
615 616
      ],
      compile,[''])
Ian Lynagh's avatar
Ian Lynagh committed
617 618 619

test('T5642',
     [ only_ways(['normal']),
Ben Gamari's avatar
Ben Gamari committed
620
       normal,
621
       compiler_stats_num_field('bytes allocated',
622
           [(wordsize(32), 413517560, 10),
623
                     # sample from x86/Linux
Gabor Greif's avatar
Typos  
Gabor Greif committed
624
            # prev:        650000000
625
            # 2014-09-03:  753045568
626
            # 2014-12-10:  641085256 Improvements in constraints solver
627
            # 2016-04-06:  462677300
628
            # 2017-03-24:  413517560 (x86/Linux, 64-bit machine)
629

630
            (wordsize(64),  838316496, 10)])
631 632
            # prev:        1300000000
            # 2014-07-17:  1358833928 (general round of updates)
633
            # 2014-08-07:  1402242360 (caused by 1fc60ea)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
634
# Watch out for:
Joachim Breitner's avatar
Joachim Breitner committed
635 636 637 638 639
            # 23/05/2014:  1452688392 (More aggressive specialisation means we get
            #                          specialised copies of imported functions that
            #                          are ultimately discarded by trimAutoRules
            #                          It's a bizarre program with LOTS of data types)
            # 2014-09-10:  1536924976 post-AMP-cleanup
640
            # 2014-12-10:  1282916024 Improvements in constraints solver
641
            # 2015-10-28:  1412808976 Emit Typeable at definition site
642
            # 2015-11-22:  1071915072 Use TypeLits in the metadata encoding
643
            # 2016-02-08:   950004816 Pattern match checker re-rework
Ryan Scott's avatar
Ryan Scott committed
644
            # 2016-05-12:  1300685592 Make Generic1 poly-kinded
645
            # 2016-06-05:   916484672 Refactor derived Generic instances to reduce allocations
646
            # 2016-09-03:   838316496 Derive the Generic instance in perf/compiler/T5642
Ian Lynagh's avatar
Ian Lynagh committed
647 648
      ],
      compile,['-O'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
649 650 651

test('T5837',
     [ only_ways(['normal']),
652
      compiler_stats_num_field('bytes allocated',
653
          [(wordsize(32), 27028956, 10),
654
             # 40000000 (x86/Linux)
655 656
             # 2013-11-13:  45520936 (x86/Windows, 64bit machine)
             # 2014-09-03:  37096484 (Windows laptop, w/w for INLINABLE things
657
             # 2014-12-01: 135914136 (Windows laptop, regression see below)
658 659
             # 2014-12-08: 115905208  Constraint solver perf improvements (esp kick-out)
             # 2016-04-06: 24199320  (x86/Linux, 64-bit machine) TypeInType
660
             # 2017-03-24: 27028956  (x86/Linux, 64-bit machine)
661

662
           (platform('x86_64-unknown-mingw32'), 54793816, 7),
663 664
             # 2017-02-19                       59161648 (x64/Windows) - Unknown
             # 2017-04-21                       54985248 (x64/Windows) - Unknown
665
             # 2017-12-24                       54793816 (x64/Windows) - Unknown
666

667
           (wordsize(64), 52089424, 7)])
668
             # sample: 3926235424 (amd64/Linux, 15/2/2012)
669 670
             # 2012-10-02 81879216
             # 2012-09-20 87254264 amd64/Linux
671
             # 2013-09-18 90587232 amd64/Linux
Austin Seipp's avatar
Austin Seipp committed
672 673
             # 2013-11-21 86795752 amd64/Linux, GND via Coercible and counters
             #                                  for constraints solving
674 675
             # 2014-08-29 73639840 amd64/Linux, w/w for INLINABLE things
             # 2014-10-08 73639840 amd64/Linux, Burning Bridges and other small changes
676
             # 2014-11-06 271028976       Linux, Accept big regression;
677
             #   See Note [An alternative story for the inert substitution] in TcFlatten
678
             # 2014-12-08 234790312 Constraint solver perf improvements (esp kick-out)
679 680
             # 2014-12-16 231155640 Mac  Flattener parameterized over roles;
             #                           some optimization
681
             # 2015-03-17 53424304  Mac  Better depth checking; fails earlier
682
             # 2015-06-09 38834096  Better "improvement"; I'm not sure whey it improves things
683 684 685
             # 2015-12-11 43877520  amd64/Linux, TypeInType (see #11196)
             # 2016-03-18 48507272  Mac, accept small regression in exchange
             #                           for other optimisations
Richard Eisenberg's avatar
Richard Eisenberg committed
686
             # 2016-09-15 42445672  Linux; fixing #12422
687
             # 2016-09-25 41832056  amd64/Linux, Rework handling of names (D2469)
688 689 690
             # 2016-10-25 52597024  amd64/Linux, the test now passes (hooray), and so
             #                          allocates more because it goes right down the
             #                          compilation pipeline
691 692
             # 2017-01-24 57861352  amd64/Linux, very likely due to the top-level strings
             #                          in Core patch.
693 694 695 696
             # 2017-02-07 50253880  Another improvement in SetLevels.  I don't think
             #                      all the gain here is from this patch, but I think it
             #                      just pushed it over the edge, so I'm re-centreing, and
             #                      changing to 5% tolerance
697 698 699
             # 2017-02-07 53592736  amd64/Linux Simon's earlier decrease appears
             #                      to be environmentally-dependent.
             #                      Also bumped acceptance threshold to 7%.
700
             # 2017-02-20 58648600  amd64/Linux Type-indexed Typeable
701
             # 2017-02-28 54151864  amd64/Linux Likely drift due to recent simplifier improvements
Simon Peyton Jones's avatar
Simon Peyton Jones committed
702
             # 2017-02-25 52625920  amd64/Linux Early inlining patch
Moritz Angermann's avatar
Moritz Angermann committed
703
             # 2017-09-06 56782344  amd64/Linux Drift manifest in unrelated LLVM patch
704
             # 2017-10-24 52089424  amd64/linux Fix space leak in BinIface.getSymbolTable
Simon Peyton Jones's avatar
Simon Peyton Jones committed
705
      ],
706
      compile, ['-freduction-depth=50'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
707 708 709

test('T6048',
     [ only_ways(['optasm']),
710
      compiler_stats_num_field('bytes allocated',
711
          [(wordsize(32), 55701280, 10),
712 713
            # prev:       38000000 (x86/Linux)
            # 2012-10-08: 48887164 (x86/Linux)
714
            # 2014-04-04: 62618072 (x86 Windows, 64 bit machine)
715
            # 2014-09-03: 56315812 (x86 Windows, w/w for INLINABLE)
716
            # 2014-12-01: 49987836 (x86 Windows)
717
            # 2016-04-06: 55701280 (x86/Linux, 64-bit machine)
718

Simon Peyton Jones's avatar
Simon Peyton Jones committed
719
           (wordsize(64), 90996312, 10)])
Ben Gamari's avatar
Ben Gamari committed
720 721 722 723 724 725 726 727 728 729 730 731
             # 2012-09-18  97247032 amd64/Linux
             # 2014-01-16 108578664 amd64/Linux (unknown, likely foldl-via-foldr)
             # 2014-01-18  95960720 amd64/Linux Call Arity improvements
             # 2014-02-28 105556793 amd64/Linux (unknown, tweak in base/4d9e7c9e3 resulted in change)
             # 2014-03-05 110646312 amd64/Linux Call Arity became more elaborate
             # 2014-07-14 125431448 amd64/Linux unknown reason. Even worse in GHC-7.8.3. *shurg*
             # 2014-08-29 108354472 amd64/Linux w/w for INLINABLE things
             # 2014-09-14  88186056 amd64/Linux BPP part1 change (more NoImplicitPreludes in base)
             # 2014-01-08  95946688 amd64/Linux Mostly 4c834fd. Occasional spikes to 103822120!
             # 2016-03-11 108225624 amd64/Linux unknown reason sadly; likely gradual creep.
             # 2016-11-25  94327392 amd64/Linux Back down again hooray; still not sure why
             # 2017-02-17 115715592 amd64/Linux Type-indexed Typeable
Simon Peyton Jones's avatar
Simon Peyton Jones committed
732
             # 2017-04-28 90996312 Join point refactoring
Simon Peyton Jones's avatar
Simon Peyton Jones committed
733 734
      ],
      compile,[''])
735 736 737 738

test('T9020',
     [ only_ways(['optasm']),
      compiler_stats_num_field('bytes allocated',
739
          [(wordsize(32), 249904136, 10),
740 741
           # Original:    381360728
           # 2014-07-31:  343005716 (Windows) (general round of updates)
742
           # 2017-03-24:  249904136 (x86/Linux, 64-bit machine)
743 744

           (wordsize(64), 423163832, 10)])
745 746
           # prev:        795469104
           # 2014-07-17:  728263536 (general round of updates)
Joachim Breitner's avatar
Joachim Breitner committed
747
           # 2014-09-10:  785871680 post-AMP-cleanup
David Feuer's avatar
David Feuer committed
748
           # 2014-11-03:  680162056 Further Applicative and Monad adjustments
749
           # 2015-10-21:  786189008 Make stronglyConnCompFromEdgedVertices deterministic
750
           # 2016-01-26:  698401736 improvement from using ExpTypes instead of ReturnTvs
751
           # 2016-04-06:  852298336 Refactoring of CSE #11781
752
           # 2016-04-06:  698401736 Use thenIO in Applicative IO
753
           # 2017-02-03:  764866144 Join points
Simon Peyton Jones's avatar
Simon Peyton Jones committed
754 755
           # 2017-02-14:  500707080 Early inline patch; 35% decrease!
           #                        Program size collapses in first simplification
756
           # 2017-03-31:  493596312 Fix memory leak in simplifier
757
           # 2017-04-28:  423163832  Remove exponential behaviour in simplifier
758 759
      ],
      compile,[''])
760 761 762

test('T9675',
     [ only_ways(['optasm']),
763
       compiler_stats_num_field('max_bytes_used', # Note [residency]
764
          [(wordsize(64), 17675240, 15),
765
          # 2014-10-13    29596552
766
          # 2014-10-13    26570896   seq the DmdEnv in seqDmdType as well
767
          # 2014-10-13    18582472   different machines giving different results..
768
          # 2014-10-13    22220552   use the mean
769
          # 2015-06-21    28056344   switch to `+RTS -G1`, tighten bound to 15%
770
          # 2015-10-28    23776640   emit Typeable at definition site
771
          # 2015-12-11    30837312   TypeInType (see #11196)
772 <