all.T 55.7 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), 61, 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
      compiler_stats_num_field('max_bytes_used',
59
          [(platform('i386-unknown-mingw32'), 5719436, 20),
60 61
                                 # 2010-05-17 5717704 (x86/Windows)
                                 # 2013-02-10 5159748 (x86/Windows)
62
                                 # 2013-02-10 5030080 (x86/Windows)
63
                                 # 2013-11-13 7295012 (x86/Windows, 64bit machine)
64
                                 # 2014-04-24 5719436 (x86/Windows, 64bit machine)
65
           (wordsize(32), 9418680, 1),
66 67
             #            6707308 (x86/OS X)
             # 2009-12-31 6149572 (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
68
             # 2014-01-22 6429864 (x86/Linux)
69
             # 2014-06-29 5949188 (x86/Linux)
70 71
             # 2015-07-11 6241108 (x86/Linux, 64-bit machine) use +RTS -G1
             # 2016-04-06 9093608 (x86/Linux, 64-bit machine)
72
             # 2017-03-24 9261052 (x86/Linux, 64-bit machine)
73
             # 2017-04-06 9418680 (x86/Linux, 64-bit machine)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
74

75
           (wordsize(64), 16679176, 15)]),
Joachim Breitner's avatar
Joachim Breitner committed
76
             # 2014-09-10 10463640, 10  # post-AMP-update (somewhat stabelish)
Austin Seipp's avatar
Austin Seipp committed
77
               # looks like the peak is around ~10M, but we're
78 79 80
               # 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
81
               # See Note [residency] to get an accurate view.
82 83
             # 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
84
             # 2015-07-11 11670120 (amd64/Linux)
85
             # 2015-10-28 15017528 (amd64/Linux) emit typeable at definition site
Ben Gamari's avatar
Ben Gamari committed
86
             # 2016-10-12 17285216 (amd64/Linux) it's not entirely clear why
lukemaurer's avatar
lukemaurer committed
87
             # 2017-02-01 19924328 (amd64/Linux) Join points (#12988)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
88
             # 2017-02-14 16393848 Early inline patch
89
             # 2017-03-31 16679176 Fix memory leak in simplifier
Simon Peyton Jones's avatar
Simon Peyton Jones committed
90

91
      compiler_stats_num_field('bytes allocated',
92
          [(platform('i386-unknown-mingw32'), 301784492, 5),
93 94
                                 #            215582916 (x86/Windows)
                                 # 2012-10-29 298921816 (x86/Windows)
95
                                 # 2013-02-10 310633884 (x86/Windows)
96
                                 # 2013-11-13 317975916 (x86/Windows, 64bit machine)
97
                                 # 2014-04-04 301784492 (x86/Windows, 64bit machine)
98
           (wordsize(32), 324586096, 1),
99 100 101 102
             #            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
103
             # 2014-01-22 316103268 (x86/Linux)
104
             # 2014-06-29 303300692 (x86/Linux)
105
             # 2015-07-11 288699104 (x86/Linux, 64-bit machine) use +RTS -G1
106
             # 2016-04-06 344730660 (x86/Linux, 64-bit machine)
107
             # 2017-03-24 324586096 (x86/Linux, 64-bit machine)
108
           (wordsize(64), 659863176, 5)]),
Ben Gamari's avatar
Ben Gamari committed
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
             # 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
130
             # 2017-02-25 695354904 (x86_64/Linux) Early inlining patch
131
             # 2017-04-21 659863176 (x86_64/Linux) Unknown
132
      only_ways(['normal']),
133

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

      # Use `+RTS -G1` for more stable residency measurements. Note [residency].
139
      extra_hc_opts('+RTS -G1 -RTS')
Simon Marlow's avatar
Simon Marlow committed
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
      ],
     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',
157
     [
Simon Marlow's avatar
Simon Marlow committed
158
      compiler_stats_num_field('max_bytes_used', # Note [residency]
159
          [(wordsize(32), 28686588, 15),
160 161 162 163
             #            17725476 (x86/OS X)
             #            14593500 (Windows)
             # 2013-02-10 20651576 (x86/Windows)
             # 2013-02-10 20772984 (x86/OSX)
164
             # 2013-11-13 24009436 (x86/Windows, 64bit machine)
165
             # 2014-04-24 19882188 (x86/Windows, 64bit machine)
166
             # 2014-12-22 26525384 (x86/Windows) Increase due to silent superclasses?
167
             # 2015-07-11 43196344 (x86/Linux, 64-bit machine) use +RTS -G1
168
             # 2016-04-06 28686588 (x86/Linux, 64-bit machine)
169

Ben Gamari's avatar
Ben Gamari committed
170
           (wordsize(64), 63131248, 20)]),
171 172 173 174 175 176 177 178 179
             # 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)
180 181
             # 2014-07-14:     36670800  (amd64/Linux)
             #  (reason unknown, setting expected value somewhere in between)
182 183
             # 2015-01-22:     45000000  (amd64/Linux)
             #  varies between 40959592 and 52914488... increasing to +-20%
184 185
             # 2015-10-28:     50367248  (amd64/Linux)
             #  D757: emit Typeable instances at site of type definition
thomie's avatar
thomie committed
186 187
             # 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
188
             # 2017-02-17:     63131248  (amd64/Linux) Type indexed Typeable
189

190
      compiler_stats_num_field('bytes allocated',
191
          [(wordsize(32), 1377050640, 5),
192 193 194
           # previous:     815479800  (x86/Linux)
           # (^ increase due to new codegen, see #7198)
           # 2012-10-08:  1373514844 (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
195 196
           # 2013-11-13: 1478325844  (x86/Windows, 64bit machine)
           # 2014-01-12: 1565185140  (x86/Linux)
197
           # 2013-04-04: 1377050640  (x86/Windows, 64bit machine)
Ben Gamari's avatar
Ben Gamari committed
198
           (wordsize(64), 2758641264, 5)]),
199 200 201 202
            # old:        1357587088 (amd64/Linux)
            # 29/08/2012: 2961778696 (amd64/Linux)
            # (^ increase due to new codegen, see #7198)
            # 18/09/2012: 2717327208 (amd64/Linux)
203 204 205
            # 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)
206
            # 12/03/2014: 2705289664 (amd64/Linux) (more call arity improvements)
207
            # 2014-17-07: 2671595512 (amd64/Linux) (round-about update)
Joachim Breitner's avatar
Joachim Breitner committed
208
            # 2014-09-10: 2709595808 (amd64/Linux) post-AMP cleanup
thomie's avatar
thomie committed
209 210
            # 2016-07-11: 2664479936 (Windows) before fix for #12227
            # 2016-07-11: 2739731144 (Windows) after fix for #12227 (ignoring)
211
            # 2017-02-17: 2758641264 (amd64/Linux) (Type indexed Typeable)
212 213 214
      conf_3294,

      # Use `+RTS -G1` for more stable residency measurements. Note [residency].
215
      extra_hc_opts('+RTS -G1 -RTS')
Simon Marlow's avatar
Simon Marlow committed
216 217 218
      ],
     compile,
     [''])
Ian Lynagh's avatar
Ian Lynagh committed
219

Simon Peyton Jones's avatar
Simon Peyton Jones committed
220
test('T4801',
221 222
     [ # expect_broken(5224),
       # temporarily unbroken (#5227)
223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
###################################
# 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
241

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

248
           (wordsize(32), 199856388, 10),
Austin Seipp's avatar
Austin Seipp committed
249 250
           # prev:        185669232 (x86/OSX)
           # 2014-01-22:  211198056 (x86/Linux)
251
           # 2014-09-03:  185242032 (Windows laptop)
252
           # 2014-12-01:  203962148 (Windows laptop)
253
           # 2016-04-06:  239556572 (x86/Linux)
254
           # 2017-03-24:  199856388 (x86/Linux)
255
           (wordsize(64), 388898280, 10)]),
256 257 258
            # 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
259
            # 2014-04-08: 362939272 (amd64/Linux) cumulation of various smaller improvements over recent commits
Joachim Breitner's avatar
Joachim Breitner committed
260
            # 2014-10-08: 382056344 (amd64/Linux) stricter foldr2 488e95b
261
            # 2015-10-28: 434278248 (amd64/Linux) emit Typeable at definition site
262
            # 2016-10-19: 388898280 (amd64/Linux) Refactor traceRn interface (#12617)
Simon Marlow's avatar
Simon Marlow committed
263

264
###################################
265
# deactivated for now, as this metric became too volatile recently
266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287
#
#     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)
288
       only_ways(['normal']),
289 290 291
       extra_hc_opts('-static'),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
292
       extra_hc_opts('+RTS -G1 -RTS')
293
       ],
Simon Peyton Jones's avatar
Simon Peyton Jones committed
294 295 296
     compile,
     [''])

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

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

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

334
           (wordsize(64), 281509496, 5)]),
335 336 337 338 339 340 341 342
            # (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
343
            # (amd64/Linux) (2014-07-17): 332702112, general round of updates
344
            # (amd64/Linux) (2014-08-29): 313638592, w/w for INLINABLE things
345 346 347 348 349
            # (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
350
            #                                        much less code for Monad instances
351
            # (amd64/Linux) (2015-12-01): 264952256, Regression due to Simon's wildcard refactor
352
            #                                        Tracked as #11151.
353
            # (amd64/Linux) (2015-12-11): 304344936, Regression due to TypeInType
354
            #                                        Tracked as #11196
355
            # (amd64/Linux) (2016-04-15): 287460128  Improvement due to using coercionKind instead
356
            #                                        of zonkTcType (Trac #11882)
357
            # (amd64/Darwin) (2017-01-23): 306222424 Presumably creep from recent changes (Typeable?)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
358
            # (amd64/Linux) (2017-02-14): 259815560  Early inline patch: 9% improvement
359
            # (amd64/Linux) (2017-03-31): 265950920  Fix memory leak in simplifier
360
            # (amd64/Linux) (2017-05-01): 281509496  Avoid excessive space usage from unfoldings in CoreTidy
361

362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385
###################################
# 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
386

387 388 389
       only_ways(['normal']),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
390
       extra_hc_opts('+RTS -G1 -RTS')
Ian Lynagh's avatar
Ian Lynagh committed
391 392 393 394
      ],
     compile,
     [''])

Ian Lynagh's avatar
Ian Lynagh committed
395 396 397 398 399
test('T4007',
     normal,
     run_command,
     ['$MAKE -s --no-print-directory T4007'])

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

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

433 434 435
       only_ways(['normal'])
      ],
     compile,
436
     ['-freduction-depth=300'])
437

Simon Peyton Jones's avatar
Simon Peyton Jones committed
438
test('T5631',
439
     [compiler_stats_num_field('bytes allocated',
440
          [(wordsize(32), 570137436, 10),
441
        # expected value: 392904228 (x86/Linux)
442
        # 2014-04-04:     346389856 (x86 Windows, 64 bit machine)
443
        # 2014-12-01:     390199244 (Windows laptop)
444
        # 2016-04-06:     570137436 (amd64/Linux) many reasons
445
           (wordsize(64), 1037482512, 5)]),
446
        # expected value: 774595008 (amd64/Linux):
447
        # expected value: 735486328 (amd64/Linux) 2012/12/12:
448
        # expected value: 690742040 (amd64/Linux) Call Arity improvements
449
        # 2014-09-09:     739704712 (amd64/Linux) AMP changes
450
        # 2014-11-04:     776121120 (amd64/Linux) new-flatten-skolems
451
        # 2015-06-01:     812288344 (amd64/Linux) unknown cause
452 453 454
        # 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
455
        # 2016-10-19:     1024926024 (amd64/Linux) Refactor traceRn interface (#12617)
456
        # 2016-11-10:     1077429456 (amd64/Linux) Stop -dno-debug-output suppressing -ddump-tc-trace
Ben Gamari's avatar
Ben Gamari committed
457
        # 2017-02-17:     1517484488 (amd64/Linux) Type-indexed Typeable
Ben Gamari's avatar
Ben Gamari committed
458
        # 2017-03-03:     1065147968 (amd64/Linux) Share Typeable KindReps
459
        # 2017-03-31:     1037482512 (amd64/Linux) Fix memory leak in simplifier
Simon Peyton Jones's avatar
Simon Peyton Jones committed
460 461 462 463 464
       only_ways(['normal'])
      ],
     compile,
     [''])

465
test('parsing001',
466
     [compiler_stats_num_field('bytes allocated',
467 468 469
          [(wordsize(32), 232777056, 10),
        # Initial:        274000576
        # 2017-03-24:     232777056
Simon Peyton Jones's avatar
Simon Peyton Jones committed
470
           (wordsize(64), 463931280, 5)]),
471
        # expected value: 587079016 (amd64/Linux)
472
        # 2016-09-01:     581551384 (amd64/Linux) Restore w/w limit (#11565)
lukemaurer's avatar
lukemaurer committed
473
        # 2016-12-19:     493730288 (amd64/Linux) Join points (#12988)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
474
        # 2017-02-14:     463931280 Early inlining patch; acutal improvement 7%
475 476 477 478 479
       only_ways(['normal']),
      ],
     compile_fail, [''])


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

Simon Peyton Jones's avatar
Simon Peyton Jones committed
494
           (wordsize(64), 436978192, 10)]),
495 496 497 498 499 500
            # 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)
501 502
            # 18/10/2013: 734038080 (amd64/Linux)
            #   (fix for #8456)
503 504
            # 24/10/2013: 654804144 (amd64/Linux)
            #   (fix previous fix for #8456)
505 506
            # 2014-07-17: 640031840 (amd64/Linux)
            #   (general round of updates)
507
            # 2014-08-29: 441932632 (amd64/Linux)
508
            #   (better specialisation, raft of core-to-core optimisations)
509 510 511 512 513 514 515 516 517 518
            # 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
519 520
            # 2015-12-04: 1134085384 (amd64/Linux)
            #    (D1535: Major overhaul of pattern match checker, #11162)
521 522
            # 2016-02-03: 488592288 (amd64/Linux)
            #    (D1795: Another overhaul of pattern match checker, #11374)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
523 524
            # 2017-02-14    436978192    Early inlining: 5% improvement

525
      extra_hc_opts('-static')
526 527
      ],
      compile,[''])
528 529 530

test('T5321Fun',
     [ only_ways(['normal']),  # no optimisation for this one
531
       compiler_stats_num_field('bytes allocated',
532
           [(wordsize(32), 244387620, 10),
533 534 535
             # prev:       300000000
             # 2012-10-08: 344416344 x86/Linux
             #  (increase due to new codegen)
536
             # 2014-09-03: 299656164     (specialisation and inlining)
537
             # 2014-12-10: 206406188     #  Improvements in constraint solver
538
             # 2016-04-06: 279922360 x86/Linux
539 540
             # 2017-03-24: 244387620 x86/Linux (64-bit machine)

Simon Peyton Jones's avatar
Simon Peyton Jones committed
541
            (wordsize(64), 488295304, 5)])
542
             # prev:       585521080
543 544 545 546 547 548 549 550 551
             # 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
552 553
             #  (undefined now takes an implicit parameter and GHC -O0 does
             #  not recognize that the application is bottom)
554 555
             # 2015-12-11: 565883176     #  TypeInType (see #11196)
             # 2017-01-06: 497356688     #  Small coercion optimisations
556 557
                                         #  The actual decrease was only 2%; earlier
                                         #    commits had drifted down
558
             # 2017-01-22: 525895608     #  Allow top-level string literals in Core. I'm not
559 560 561 562 563
                                         #    convinced that this patch is
                                         #    responsible for all of this
                                         #    change, however. Namely I am
                                         #    quite skeptical of the downward
                                         #    "drift" reported above
564 565
             # 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
566
             # 2017-02-25: 488295304     #  Early inlining patch
567 568 569 570 571
      ],
      compile,[''])

test('T5321FD',
     [ only_ways(['normal']),  # no optimisation for this one
572
      compiler_stats_num_field('bytes allocated',
573
          [(wordsize(32), 250757460, 10),
574 575 576
            # prev:       213380256
            # 2012-10-08: 240302920 (x86/Linux)
            #  (increase due to new codegen)
577 578
            # 2014-07-31: 211699816 (Windows) (-11%)
            #  (due to better optCoercion, 5e7406d9, #9233)
579
            # 2016-04-06: 250757460 (x86/Linux)
580

581
           (wordsize(64), 477840432, 10)])
582 583 584
            # prev:       418306336
            # 29/08/2012: 492905640
            #  (increase due to new codegen)
585
            # 15/05/2013: 406039584
586
            #  (reason for decrease unknown)
587
            # 08/06/2013: 476497048
588
            #  (reason for increase unknown)
589 590 591 592
            # 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)
593 594
            # 2014-10-08  410895536
            #  (various changes; biggest improvements due to 949ad67 and FastString package ids)
595 596 597
            # 2015-08-10: 470895536
            #  (undefined now takes an implicit parameter and GHC -O0 does
            #  not recognize that the application is bottom)
598 599
            # 2015-10-28: 532365376
            #  D757: emit Typeable instances at site of type definition
600 601
            # 2016-07-16: 477840432
            #  Optimize handling of built-in OccNames
602 603
      ],
      compile,[''])
Ian Lynagh's avatar
Ian Lynagh committed
604 605 606

test('T5642',
     [ only_ways(['normal']),
Ben Gamari's avatar
Ben Gamari committed
607
       normal,
608
       compiler_stats_num_field('bytes allocated',
609
           [(wordsize(32), 413517560, 10),
610
                     # sample from x86/Linux
Gabor Greif's avatar
Typos  
Gabor Greif committed
611
            # prev:        650000000
612
            # 2014-09-03:  753045568
613
            # 2014-12-10:  641085256 Improvements in constraints solver
614
            # 2016-04-06:  462677300
615
            # 2017-03-24:  413517560 (x86/Linux, 64-bit machine)
616

617
            (wordsize(64),  838316496, 10)])
618 619
            # prev:        1300000000
            # 2014-07-17:  1358833928 (general round of updates)
620
            # 2014-08-07:  1402242360 (caused by 1fc60ea)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
621
# Watch out for:
Joachim Breitner's avatar
Joachim Breitner committed
622 623 624 625 626
            # 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
627
            # 2014-12-10:  1282916024 Improvements in constraints solver
628
            # 2015-10-28:  1412808976 Emit Typeable at definition site
629
            # 2015-11-22:  1071915072 Use TypeLits in the metadata encoding
630
            # 2016-02-08:   950004816 Pattern match checker re-rework
Ryan Scott's avatar
Ryan Scott committed
631
            # 2016-05-12:  1300685592 Make Generic1 poly-kinded
632
            # 2016-06-05:   916484672 Refactor derived Generic instances to reduce allocations
633
            # 2016-09-03:   838316496 Derive the Generic instance in perf/compiler/T5642
Ian Lynagh's avatar
Ian Lynagh committed
634 635
      ],
      compile,['-O'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
636 637 638

test('T5837',
     [ only_ways(['normal']),
639
      compiler_stats_num_field('bytes allocated',
640
          [(wordsize(32), 27028956, 10),
641
             # 40000000 (x86/Linux)
642 643
             # 2013-11-13:  45520936 (x86/Windows, 64bit machine)
             # 2014-09-03:  37096484 (Windows laptop, w/w for INLINABLE things
644
             # 2014-12-01: 135914136 (Windows laptop, regression see below)
645 646
             # 2014-12-08: 115905208  Constraint solver perf improvements (esp kick-out)
             # 2016-04-06: 24199320  (x86/Linux, 64-bit machine) TypeInType
647
             # 2017-03-24: 27028956  (x86/Linux, 64-bit machine)
648

649
           (platform('x86_64-unknown-mingw32'), 59161648, 7),
650 651
             # 2017-02-19                       59161648 (x64/Windows) - Unknown
             # 2017-04-21                       54985248 (x64/Windows) - Unknown
652

Simon Peyton Jones's avatar
Simon Peyton Jones committed
653
           (wordsize(64), 52625920, 7)])
654
             # sample: 3926235424 (amd64/Linux, 15/2/2012)
655 656
             # 2012-10-02 81879216
             # 2012-09-20 87254264 amd64/Linux
657
             # 2013-09-18 90587232 amd64/Linux
Austin Seipp's avatar
Austin Seipp committed
658 659
             # 2013-11-21 86795752 amd64/Linux, GND via Coercible and counters
             #                                  for constraints solving
660 661
             # 2014-08-29 73639840 amd64/Linux, w/w for INLINABLE things
             # 2014-10-08 73639840 amd64/Linux, Burning Bridges and other small changes
662
             # 2014-11-06 271028976       Linux, Accept big regression;
663
             #   See Note [An alternative story for the inert substitution] in TcFlatten
664
             # 2014-12-08 234790312 Constraint solver perf improvements (esp kick-out)
665 666
             # 2014-12-16 231155640 Mac  Flattener parameterized over roles;
             #                           some optimization
667
             # 2015-03-17 53424304  Mac  Better depth checking; fails earlier
668
             # 2015-06-09 38834096  Better "improvement"; I'm not sure whey it improves things
669 670 671
             # 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
672
             # 2016-09-15 42445672  Linux; fixing #12422
673
             # 2016-09-25 41832056  amd64/Linux, Rework handling of names (D2469)
674 675 676
             # 2016-10-25 52597024  amd64/Linux, the test now passes (hooray), and so
             #                          allocates more because it goes right down the
             #                          compilation pipeline
677 678
             # 2017-01-24 57861352  amd64/Linux, very likely due to the top-level strings
             #                          in Core patch.
679 680 681 682
             # 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
683 684 685
             # 2017-02-07 53592736  amd64/Linux Simon's earlier decrease appears
             #                      to be environmentally-dependent.
             #                      Also bumped acceptance threshold to 7%.
686
             # 2017-02-20 58648600  amd64/Linux Type-indexed Typeable
687
             # 2017-02-28 54151864  amd64/Linux Likely drift due to recent simplifier improvements
Simon Peyton Jones's avatar
Simon Peyton Jones committed
688
             # 2017-02-25 52625920  amd64/Linux Early inlining patch
Simon Peyton Jones's avatar
Simon Peyton Jones committed
689
      ],
690
      compile, ['-freduction-depth=50'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
691 692 693

test('T6048',
     [ only_ways(['optasm']),
694
      compiler_stats_num_field('bytes allocated',
695
          [(wordsize(32), 55701280, 10),
696 697
            # prev:       38000000 (x86/Linux)
            # 2012-10-08: 48887164 (x86/Linux)
698
            # 2014-04-04: 62618072 (x86 Windows, 64 bit machine)
699
            # 2014-09-03: 56315812 (x86 Windows, w/w for INLINABLE)
700
            # 2014-12-01: 49987836 (x86 Windows)
701
            # 2016-04-06: 55701280 (x86/Linux, 64-bit machine)
702

Simon Peyton Jones's avatar
Simon Peyton Jones committed
703
           (wordsize(64), 90996312, 10)])
Ben Gamari's avatar
Ben Gamari committed
704 705 706 707 708 709 710 711 712 713 714 715
             # 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
716
             # 2017-04-28 90996312 Join point refactoring
Simon Peyton Jones's avatar
Simon Peyton Jones committed
717 718
      ],
      compile,[''])
719 720 721 722

test('T9020',
     [ only_ways(['optasm']),
      compiler_stats_num_field('bytes allocated',
723
          [(wordsize(32), 249904136, 10),
724 725
           # Original:    381360728
           # 2014-07-31:  343005716 (Windows) (general round of updates)
726
           # 2017-03-24:  249904136 (x86/Linux, 64-bit machine)
727 728

           (wordsize(64), 423163832, 10)])
729 730
           # prev:        795469104
           # 2014-07-17:  728263536 (general round of updates)
Joachim Breitner's avatar
Joachim Breitner committed
731
           # 2014-09-10:  785871680 post-AMP-cleanup
David Feuer's avatar
David Feuer committed
732
           # 2014-11-03:  680162056 Further Applicative and Monad adjustments
733
           # 2015-10-21:  786189008 Make stronglyConnCompFromEdgedVertices deterministic
734
           # 2016-01-26:  698401736 improvement from using ExpTypes instead of ReturnTvs
735
           # 2016-04-06:  852298336 Refactoring of CSE #11781
736
           # 2016-04-06:  698401736 Use thenIO in Applicative IO
737
           # 2017-02-03:  764866144 Join points
Simon Peyton Jones's avatar
Simon Peyton Jones committed
738 739
           # 2017-02-14:  500707080 Early inline patch; 35% decrease!
           #                        Program size collapses in first simplification
740
           # 2017-03-31:  493596312 Fix memory leak in simplifier
741
           # 2017-04-28:  423163832  Remove exponential behaviour in simplifier
742 743
      ],
      compile,[''])
744 745 746

test('T9675',
     [ only_ways(['optasm']),
747
       compiler_stats_num_field('max_bytes_used', # Note [residency]
748
          [(wordsize(64), 17675240, 15),
749
          # 2014-10-13    29596552
750
          # 2014-10-13    26570896   seq the DmdEnv in seqDmdType as well
751
          # 2014-10-13    18582472   different machines giving different results..
752
          # 2014-10-13    22220552   use the mean
753
          # 2015-06-21    28056344   switch to `+RTS -G1`, tighten bound to 15%
754
          # 2015-10-28    23776640   emit Typeable at definition site
755
          # 2015-12-11    30837312   TypeInType (see #11196)
756 757
          # 2016-03-14    38776008   Final demand analyzer run
          # 2016-04-01    29871032   Fix leaks in demand analysis
758
          # 2016-04-30    17675240   Fix leaks in tidy unfoldings
759 760 761
           (wordsize(32), 18043224, 15)
          # 2015-07-11    15341228   (x86/Linux, 64-bit machine) use +RTS -G1
          # 2016-04-06    18043224   (x86/Linux, 64-bit machine)
762
          ]),
763
       compiler_stats_num_field('peak_megabytes_allocated', # Note [residency]
764
          [(wordsize(64), 63, 15),
765
          # 2014-10-13    66
766
          # 2014-10-13    58         seq the DmdEnv in seqDmdType as well
767
          # 2014-10-13    49         different machines giving different results...
768
          # 2014-10-13    53         use the mean
769 770
          # 2015-06-15    44         reduced for some reason
          # 2015-06-21    105        switch to `+RTS -G1`
771
          # 2015-12-04    88         new pattern checker (D1535)
772
          # 2015-12-11    113        TypeInType (see #11196)
773
          # 2016-04-14    144        Final demand analyzer run
Simon Marlow's avatar
Simon Marlow committed
774
          # 2016-07-26    121        Unboxed sums?
775
          # 2017-04-30    63         Fix leaks in tidy unfoldings