all.T 46.9 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), 68, 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.
56
      compiler_stats_num_field('max_bytes_used',
57
          [(platform('i386-unknown-mingw32'), 5719436, 20),
58 59
                                 # 2010-05-17 5717704 (x86/Windows)
                                 # 2013-02-10 5159748 (x86/Windows)
60
                                 # 2013-02-10 5030080 (x86/Windows)
61
                                 # 2013-11-13 7295012 (x86/Windows, 64bit machine)
62
                                 # 2014-04-24 5719436 (x86/Windows, 64bit machine)
63
           (wordsize(32), 9093608, 1),
64 65
             #            6707308 (x86/OS X)
             # 2009-12-31 6149572 (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
66
             # 2014-01-22 6429864 (x86/Linux)
67
             # 2014-06-29 5949188 (x86/Linux)
68
             # 2015-07-11 6241108 (x86/Linux, 64bit machine) use +RTS -G1
69
             # 2016-04-06 9093608 (x86/Linux, 64bit machine)
lukemaurer's avatar
lukemaurer committed
70
           (wordsize(64), 19924328, 15)]),
Joachim Breitner's avatar
Joachim Breitner committed
71
             # 2014-09-10 10463640, 10  # post-AMP-update (somewhat stabelish)
Austin Seipp's avatar
Austin Seipp committed
72
               # looks like the peak is around ~10M, but we're
73 74 75
               # 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
76
               # See Note [residency] to get an accurate view.
77 78
             # 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
79
             # 2015-07-11 11670120 (amd64/Linux)
80
             # 2015-10-28 15017528 (amd64/Linux) emit typeable at definition site
Ben Gamari's avatar
Ben Gamari committed
81
             # 2016-10-12 17285216 (amd64/Linux) it's not entirely clear why
lukemaurer's avatar
lukemaurer committed
82
             # 2017-02-01 19924328 (amd64/Linux) Join points (#12988)
83
      compiler_stats_num_field('bytes allocated',
84
          [(platform('i386-unknown-mingw32'), 301784492, 5),
85 86
                                 #            215582916 (x86/Windows)
                                 # 2012-10-29 298921816 (x86/Windows)
87
                                 # 2013-02-10 310633884 (x86/Windows)
88
                                 # 2013-11-13 317975916 (x86/Windows, 64bit machine)
89
                                 # 2014-04-04 301784492 (x86/Windows, 64bit machine)
90
           (wordsize(32), 344730660, 1),
91 92 93 94
             #            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
95
             # 2014-01-22 316103268 (x86/Linux)
96
             # 2014-06-29 303300692 (x86/Linux)
97
             # 2015-07-11 288699104 (x86/Linux, 64-bit machine) use +RTS -G1
98
             # 2016-04-06 344730660 (x86/Linux, 64-bit machine)
99
           (wordsize(64), 756138176, 5)]),
100 101 102 103 104 105 106
             # 17/11/2009 434845560 (amd64/Linux)
             # 08/12/2009 459776680 (amd64/Linux)
             # 17/05/2010 519377728 (amd64/Linux)
             # 05/08/2011 561382568 (amd64/OS X)
             # 16/07/2012 589168872 (amd64/Linux)
             # 20/07/2012 595936240 (amd64/Linux)
             # 23/08/2012 606230880 (amd64/Linux)
107
             # 29/08/2012 633334184 (amd64/Linux) new codegen
108
             # 18/09/2012 641959976 (amd64/Linux)
109 110 111 112 113
             # 19/10/2012 661832592 (amd64/Linux) -fPIC turned on
             # 23/10/2012 642594312 (amd64/Linux) -fPIC turned off again
             # 12/11/2012 658786936 (amd64/Linux) UNKNOWN REASON
             # 17/1/13:   667160192 (x86_64/Linux) new demand analyser
             # 18/10/2013 698612512 (x86_64/Linux) fix for #8456
Gabor Greif's avatar
Gabor Greif committed
114
             # 10/02/2014 660922376 (x86_64/Linux) call arity analysis
115
             # 17/07/2014 651626680 (x86_64/Linux) roundabout update
Joachim Breitner's avatar
Joachim Breitner committed
116
             # 10/09/2014 630299456 (x86_64/Linux) post-AMP-cleanup
117
             # 03/06/2015 581460896 (x86_64/Linux) use +RTS -G1
118
             # 28/10/2015 695430728 (x86_64/Linux) emit Typeable at definition site
119
             # 28/10/2015 756138176 (x86_64/Linux) inst-decl defaults go via typechecker (#12220)
120
      only_ways(['normal']),
121

122
      extra_hc_opts('-dcore-lint -static'),
123 124
          # Leave -dcore-lint on for this one test, so that we have something
          # that will catch a regression in -dcore-lint performance.
125 126

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

thomie's avatar
thomie committed
158
           (wordsize(64), 52992688, 20)]),
159 160 161 162 163 164 165 166 167
             # 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)
168 169
             # 2014-07-14:     36670800  (amd64/Linux)
             #  (reason unknown, setting expected value somewhere in between)
170 171
             # 2015-01-22:     45000000  (amd64/Linux)
             #  varies between 40959592 and 52914488... increasing to +-20%
172 173
             # 2015-10-28:     50367248  (amd64/Linux)
             #  D757: emit Typeable instances at site of type definition
thomie's avatar
thomie committed
174 175
             # 2016-07-11:     54609256  (Windows) before fix for #12227
             # 2016-07-11:     52992688  (Windows) after fix for #12227
176

177
      compiler_stats_num_field('bytes allocated',
178
          [(wordsize(32), 1377050640, 5),
179 180 181
           # previous:     815479800  (x86/Linux)
           # (^ increase due to new codegen, see #7198)
           # 2012-10-08:  1373514844 (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
182 183
           # 2013-11-13: 1478325844  (x86/Windows, 64bit machine)
           # 2014-01-12: 1565185140  (x86/Linux)
184
           # 2013-04-04: 1377050640  (x86/Windows, 64bit machine)
thomie's avatar
thomie committed
185
           (wordsize(64), 2739731144, 5)]),
186 187 188 189
            # old:        1357587088 (amd64/Linux)
            # 29/08/2012: 2961778696 (amd64/Linux)
            # (^ increase due to new codegen, see #7198)
            # 18/09/2012: 2717327208 (amd64/Linux)
190 191 192
            # 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)
193
            # 12/03/2014: 2705289664 (amd64/Linux) (more call arity improvements)
194
            # 2014-17-07: 2671595512 (amd64/Linux) (round-about update)
Joachim Breitner's avatar
Joachim Breitner committed
195
            # 2014-09-10: 2709595808 (amd64/Linux) post-AMP cleanup
thomie's avatar
thomie committed
196 197
            # 2016-07-11: 2664479936 (Windows) before fix for #12227
            # 2016-07-11: 2739731144 (Windows) after fix for #12227 (ignoring)
198 199 200
      conf_3294,

      # Use `+RTS -G1` for more stable residency measurements. Note [residency].
201
      extra_hc_opts('+RTS -G1 -RTS')
Simon Marlow's avatar
Simon Marlow committed
202 203 204
      ],
     compile,
     [''])
Ian Lynagh's avatar
Ian Lynagh committed
205

Simon Peyton Jones's avatar
Simon Peyton Jones committed
206
test('T4801',
207 208
     [ # expect_broken(5224),
       # temporarily unbroken (#5227)
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226
###################################
# 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
227

228
      compiler_stats_num_field('bytes allocated',
229 230 231
          [(platform('x86_64-apple-darwin'), 465653312, 10),
           # prev:       510938976 (amd64/OS X):
           # 2015-12-11: 465653312 (amd64/OS X) Update, bump tolerance to +/-10%
Simon Marlow's avatar
Simon Marlow committed
232

233
           (wordsize(32), 239556572, 10),
Austin Seipp's avatar
Austin Seipp committed
234 235
           # prev:        185669232 (x86/OSX)
           # 2014-01-22:  211198056 (x86/Linux)
236
           # 2014-09-03:  185242032 (Windows laptop)
237
           # 2014-12-01:  203962148 (Windows laptop)
238
           # 2016-04-06:  239556572 (x86/Linux)
239
           (wordsize(64), 388898280, 10)]),
240 241 242
            # 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
243
            # 2014-04-08: 362939272 (amd64/Linux) cumulation of various smaller improvements over recent commits
Joachim Breitner's avatar
Joachim Breitner committed
244
            # 2014-10-08: 382056344 (amd64/Linux) stricter foldr2 488e95b
245
            # 2015-10-28: 434278248 (amd64/Linux) emit Typeable at definition site
246
            # 2016-10-19: 388898280 (amd64/Linux) Refactor traceRn interface (#12617)
Simon Marlow's avatar
Simon Marlow committed
247

248
###################################
249
# deactivated for now, as this metric became too volatile recently
250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271
#
#     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)
272
       only_ways(['normal']),
273 274 275
       extra_hc_opts('-static'),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
276
       extra_hc_opts('+RTS -G1 -RTS')
277
       ],
Simon Peyton Jones's avatar
Simon Peyton Jones committed
278 279 280
     compile,
     [''])

Ian Lynagh's avatar
Ian Lynagh committed
281
test('T3064',
282
     [compiler_stats_num_field('peak_megabytes_allocated',# Note [residency]
283
          [(wordsize(32), 28, 20),
284 285
            # expected value: 14 (x86/Linux 28-06-2012):
            # 2013-11-13:     18 (x86/Windows, 64bit machine)
Austin Seipp's avatar
Austin Seipp committed
286
            # 2014-01-22:     23 (x86/Linux)
287
            # 2014-12-22:     23 (x86/Linux) death to silent superclasses
288
            # 2015-07-11      28 (x86/Linux, 64-bit machine) use +RTS -G1
289
           (wordsize(64), 66, 20)]),
290 291
            # (amd64/Linux):            18
            # (amd64/Linux) 2012-02-07: 26
292
            # (amd64/Linux) 2013-02-12: 23; increased range to 10%
293
            # (amd64/Linux) 2013-04-03: 26
Austin Seipp's avatar
Austin Seipp committed
294
            # (amd64/Linux) 2013-09-11: 30; result of AMP patch
295
            # Increased range to 20%.  peak-usage varies from 22 to 26,
296
            #  depending on whether the old .hi file exists
297
            # (amd64/Linux) 2013-09-11: 37; better arity analysis (weird)
298
            # (amd64/Linux) (09/09/2014): 42, AMP changes (larger interfaces, more loading)
299
            # (amd64/Linux) 2014-10-13: 38: Stricter seqDmdType
300
            # (amd64/Linux) 2014-12-22: 27: death to silent superclasses
301
            # (amd64/Linux) 2015-01-22: 32: Varies from 30 to 34, at least here.
302
            # (amd64/Linux) 2015-06-03: 54: use +RTS -G1
303
            # (amd64/Linux) 2016-10-25: 66: Presumably creep
304

305
      compiler_stats_num_field('bytes allocated',
306
          [(wordsize(32), 153261024, 10),
307
            # 2011-06-28: 56380288  (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
308
            # 2012-10-30: 111189536 (x86/Windows)
309
            # 2013-11-13: 146626504 (x86/Windows, 64bit machine)
Austin Seipp's avatar
Austin Seipp committed
310
            # 2014-01-22: 162457940 (x86/Linux)
311
            # 2014-12-01: 162457940 (Windows)
312
            # 2014-12-22: 122836340 (Windows) Death to silent superclasses
313
            # 2016-04-06: 153261024 (x86/Linux) probably wildcard refactor
314

315
           (wordsize(64), 287460128, 5)]),
316 317
            # (amd64/Linux) (28/06/2011):  73259544
            # (amd64/Linux) (07/02/2013): 224798696
eir@cis.upenn.edu's avatar
eir@cis.upenn.edu committed
318
            # (amd64/Linux) (02/08/2013): 236404384, increase from roles
Austin Seipp's avatar
Austin Seipp committed
319
            # (amd64/Linux) (11/09/2013): 290165632, increase from AMP warnings
320
            # (amd64/Linux) (22/11/2013): 308300448, GND via Coercible and counters for constraints solving
321
            # (amd64/Linux) (02/12/2013): 329795912, Coercible refactor
322
            # (amd64/Linux) (11/02/2014): 308422280, optimize Coercions in simpleOptExpr
323
            # (amd64/Linux) (23/05/2014): 324022680, unknown cause
324
            # (amd64/Linux) (2014-07-17): 332702112, general round of updates
325
            # (amd64/Linux) (2014-08-29): 313638592, w/w for INLINABLE things
326
            # (amd64/Linux) (09/09/2014): 407416464, AMP changes (larger interfaces, more loading)
327
            # (amd64/Linux) (14/09/2014): 385145080, BPP changes (more NoImplicitPrelude in base)
328
            # (amd64/Linux) (10/12/2014): 363103840, improvements in constraint solver
329
            # (Mac)         (18/12/2014): 350418600, improvements to flattener
330 331
            # (amd64/Linux) (22/12/2014): 243670824, Ha! Death to superclass constraints, makes
            #                                        much less code for Monad instances
332 333
            # (amd64/Linux) (01/12/2015): 264952256, Regression due to Simon's wildcard refactor
            #                                        Tracked as #11151.
334 335
            # (amd64/Linux) (11/12/2015): 304344936, Regression due to TypeInType
            #                                        Tracked as #11196
336 337
            # (amd64/Linux) (15/4/2016): 287460128   Improvement due to using coercionKind instead
            #                                        of zonkTcType (Trac #11882)
338

339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362
###################################
# 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
363

364 365 366
       only_ways(['normal']),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
367
       extra_hc_opts('+RTS -G1 -RTS')
Ian Lynagh's avatar
Ian Lynagh committed
368 369 370 371
      ],
     compile,
     [''])

Ian Lynagh's avatar
Ian Lynagh committed
372 373 374 375 376
test('T4007',
     normal,
     run_command,
     ['$MAKE -s --no-print-directory T4007'])

377
test('T5030',
378
     [compiler_stats_num_field('bytes allocated',
379
          [(wordsize(32), 345668088, 10),
380 381
           # previous:    196457520
           # 2012-10-08:  259547660 (x86/Linux, new codegen)
382
           # 2013-11-21:  198573456 (x86 Windows, 64 bit machine)
383
           # 2014-12-10:  227205560 constraint solver got worse again; more aggressive solving
384
           #                        of family-applications leads to less sharing, I think
385
           # 2015-07-11:  201882912 reason unknown
386
           # 2016-04-06:  345668088 likely TypeInType
387

388
           (wordsize(64), 794426536, 10)]),
389 390 391
             # Previously 530000000 (+/- 10%)
             # 17/1/13:   602993184  (x86_64/Linux)
             #            (new demand analyser)
392 393
             # 2013-06-08 538467496  (x86_64/Linux)
             # ^ reason unknown
eir@cis.upenn.edu's avatar
eir@cis.upenn.edu committed
394 395
             # 2013-08-02 454498592  (amd64/Linux)
             # decrease from more aggressive coercion optimisations from roles
396 397
             # 2013-11-12 397672152  (amd64/Linux)
             # big decrease following better CSE and arity
398 399
             # 2014-07-17 409314320  (amd64/Linux)
             # general round of updates
Joachim Breitner's avatar
Joachim Breitner committed
400
             # 2014-09-10 385152728  post-AMP-cleanup
401
             # 2014-12-08 340969128  constraint solver perf improvements (esp kick-out)
402
             # 2014-12-10 449042120  constraint solver got worse again; more aggressive solving
403
             #                          of family-applications leads to less sharing, I think
404
             # 2015-03-17 403932600  tweak to solver algorithm
405
             # 2015-12-11 653710960  TypeInType (see #11196)
406 407 408
             # 2016-10-17 794426536  20% big increase following
             #                       31621b12 * A collection of type-inference refactorings.
             #                       See ticket for more info
409

410 411 412
       only_ways(['normal'])
      ],
     compile,
413
     ['-freduction-depth=300'])
414

Simon Peyton Jones's avatar
Simon Peyton Jones committed
415
test('T5631',
416
     [compiler_stats_num_field('bytes allocated',
417
          [(wordsize(32), 570137436, 10),
418
        # expected value: 392904228 (x86/Linux)
419
        # 2014-04-04:     346389856 (x86 Windows, 64 bit machine)
420
        # 2014-12-01:     390199244 (Windows laptop)
421
        # 2016-04-06:     570137436 (amd64/Linux) many reasons
422
           (wordsize(64), 1077429456, 5)]),
423
        # expected value: 774595008 (amd64/Linux):
424
        # expected value: 735486328 (amd64/Linux) 2012/12/12:
425
        # expected value: 690742040 (amd64/Linux) Call Arity improvements
426
        # 2014-09-09:     739704712 (amd64/Linux) AMP changes
427
        # 2014-11-04:     776121120 (amd64/Linux) new-flatten-skolems
428
        # 2015-06-01:     812288344 (amd64/Linux) unknown cause
429 430 431
        # 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
432
        # 2016-10-19:     1024926024 (amd64/Linux) Refactor traceRn interface (#12617)
433
        # 2016-11-10:     1077429456 (amd64/Linux) Stop -dno-debug-output suppressing -ddump-tc-trace
434

Simon Peyton Jones's avatar
Simon Peyton Jones committed
435 436 437 438 439
       only_ways(['normal'])
      ],
     compile,
     [''])

440
test('parsing001',
441 442
     [compiler_stats_num_field('bytes allocated',
          [(wordsize(32), 274000576, 10),
lukemaurer's avatar
lukemaurer committed
443
           (wordsize(64), 493730288, 5)]),
444
        # expected value: 587079016 (amd64/Linux)
445
        # 2016-09-01:     581551384 (amd64/Linux) Restore w/w limit (#11565)
lukemaurer's avatar
lukemaurer committed
446
        # 2016-12-19:     493730288 (amd64/Linux) Join points (#12988)
447 448 449 450 451
       only_ways(['normal']),
      ],
     compile_fail, [''])


452 453 454
test('T783',
     [ only_ways(['normal']),  # no optimisation for this one
      # expected value: 175,569,928 (x86/Linux)
455
      compiler_stats_num_field('bytes allocated',
456
          [(wordsize(32), 249332816, 5),
457
            # 2012-10-08: 226907420 (x86/Linux)
458 459
            # 2013-02-10: 329202116 (x86/Windows)
            # 2013-02-10: 338465200 (x86/OSX)
460
            # 2014-04-04: 319179104 (x86 Windows, 64 bit machine)
461 462
            # 2014-09-03: 223377364 (Windows) better specialisation, raft of core-to-core optimisations
            # 2014-12-22: 235002220 (Windows) not sure why
463
            # 2016-04-06: 249332816 (x86/Linux, 64-bit machine)
464

465
           (wordsize(64), 488592288, 10)]),
466 467 468 469 470 471
            # 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)
472 473
            # 18/10/2013: 734038080 (amd64/Linux)
            #   (fix for #8456)
474 475
            # 24/10/2013: 654804144 (amd64/Linux)
            #   (fix previous fix for #8456)
476 477
            # 2014-07-17: 640031840 (amd64/Linux)
            #   (general round of updates)
478
            # 2014-08-29: 441932632 (amd64/Linux)
479
            #   (better specialisation, raft of core-to-core optimisations)
480 481 482 483 484 485 486 487 488 489
            # 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
490 491
            # 2015-12-04: 1134085384 (amd64/Linux)
            #    (D1535: Major overhaul of pattern match checker, #11162)
492 493
            # 2016-02-03: 488592288 (amd64/Linux)
            #    (D1795: Another overhaul of pattern match checker, #11374)
494
      extra_hc_opts('-static')
495 496
      ],
      compile,[''])
497 498 499

test('T5321Fun',
     [ only_ways(['normal']),  # no optimisation for this one
500
       compiler_stats_num_field('bytes allocated',
501
           [(wordsize(32), 279922360, 10),
502 503 504
             # prev:       300000000
             # 2012-10-08: 344416344 x86/Linux
             #  (increase due to new codegen)
505
             # 2014-09-03: 299656164     (specialisation and inlining)
506
             # 10/12/2014: 206406188     #  Improvements in constraint solver
507
             # 2016-04-06: 279922360 x86/Linux
lukemaurer's avatar
lukemaurer committed
508
            (wordsize(64), 498135752, 5)])
509
             # prev:       585521080
510 511 512 513
             # 29/08/2012: 713385808     #  (increase due to new codegen)
             # 15/05/2013: 628341952     #  (reason for decrease unknown)
             # 24/06/2013: 694019152     #  (reason for re-increase unknown)
             # 12/05/2014: 614409344     #  (specialisation and inlining changes)
Gabor Greif's avatar
Gabor Greif committed
514
             # 10/09/2014: 601629032     #  post-AMP-cleanup
515
             # 06/11/2014: 541287000     #  Simon's flat-skol changes to the constraint solver
516
             # 10/12/2014: 408110888     #  Improvements in constraint solver
517
             # 16/12/2014: 429921312     #  Flattener parameterized over roles
518 519 520
             # 10/08/2015: 509921312
             #  (undefined now takes an implicit parameter and GHC -O0 does
             #  not recognize that the application is bottom)
521
             # 11/12/2015: 565883176     #  TypeInType (see #11196)
522 523 524
             # 06/01/2017: 497356688     #  Small coercion optimisations
                                         #  The actual decrease was only 2%; earlier
                                         #    commits had drifted down
525 526 527 528 529 530
             # 22/01/2017: 525895608     #  Allow top-level string literals in Core. I'm not
                                         #    convinced that this patch is
                                         #    responsible for all of this
                                         #    change, however. Namely I am
                                         #    quite skeptical of the downward
                                         #    "drift" reported above
lukemaurer's avatar
lukemaurer committed
531
             # 31/01/2017: 498135752     #  Join points (#12988)
532 533 534 535 536
      ],
      compile,[''])

test('T5321FD',
     [ only_ways(['normal']),  # no optimisation for this one
537
      compiler_stats_num_field('bytes allocated',
538
          [(wordsize(32), 250757460, 10),
539 540 541
            # prev:       213380256
            # 2012-10-08: 240302920 (x86/Linux)
            #  (increase due to new codegen)
542 543
            # 2014-07-31: 211699816 (Windows) (-11%)
            #  (due to better optCoercion, 5e7406d9, #9233)
544
            # 2016-04-06: 250757460 (x86/Linux)
545
           (wordsize(64), 477840432, 10)])
546 547 548
            # prev:       418306336
            # 29/08/2012: 492905640
            #  (increase due to new codegen)
549
            # 15/05/2013: 406039584
550
            #  (reason for decrease unknown)
551
            # 08/06/2013: 476497048
552
            #  (reason for increase unknown)
553 554 555 556
            # 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)
557 558
            # 2014-10-08  410895536
            #  (various changes; biggest improvements due to 949ad67 and FastString package ids)
559 560 561
            # 2015-08-10: 470895536
            #  (undefined now takes an implicit parameter and GHC -O0 does
            #  not recognize that the application is bottom)
562 563
            # 2015-10-28: 532365376
            #  D757: emit Typeable instances at site of type definition
564 565
            # 2016-07-16: 477840432
            #  Optimize handling of built-in OccNames
566 567
      ],
      compile,[''])
Ian Lynagh's avatar
Ian Lynagh committed
568 569 570

test('T5642',
     [ only_ways(['normal']),
Ben Gamari's avatar
Ben Gamari committed
571
       normal,
572
       compiler_stats_num_field('bytes allocated',
573
           [(wordsize(32), 462677300, 10),
574
                     # sample from x86/Linux
Gabor Greif's avatar
Typos  
Gabor Greif committed
575
            # prev:        650000000
576
            # 2014-09-03:  753045568
577
            # 2014-12-10:  641085256 Improvements in constraints solver
578
            # 2016-04-06:  462677300
579

580
            (wordsize(64),  838316496, 10)])
581 582
            # prev:        1300000000
            # 2014-07-17:  1358833928 (general round of updates)
583
            # 2014-08-07:  1402242360 (caused by 1fc60ea)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
584
# Watch out for:
Joachim Breitner's avatar
Joachim Breitner committed
585 586 587 588 589
            # 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
590
            # 2014-12-10:  1282916024 Improvements in constraints solver
591
            # 2015-10-28:  1412808976 Emit Typeable at definition site
592
            # 2015-11-22:  1071915072 Use TypeLits in the metadata encoding
593
            # 2016-02-08:   950004816 Pattern match checker re-rework
Ryan Scott's avatar
Ryan Scott committed
594
            # 2016-05-12:  1300685592 Make Generic1 poly-kinded
595
            # 2016-06-05:   916484672 Refactor derived Generic instances to reduce allocations
596
            # 2016-09-03:   838316496 Derive the Generic instance in perf/compiler/T5642
Ian Lynagh's avatar
Ian Lynagh committed
597 598
      ],
      compile,['-O'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
599 600 601

test('T5837',
     [ only_ways(['normal']),
602
      compiler_stats_num_field('bytes allocated',
603
          [(wordsize(32), 24199320, 10),
604
             # 40000000 (x86/Linux)
605 606
             # 2013-11-13:  45520936 (x86/Windows, 64bit machine)
             # 2014-09-03:  37096484 (Windows laptop, w/w for INLINABLE things
607
             # 2014-12-01: 135914136 (Windows laptop, regression see below)
608 609
             # 2014-12-08: 115905208  Constraint solver perf improvements (esp kick-out)
             # 2016-04-06: 24199320  (x86/Linux, 64-bit machine) TypeInType
610

611
           (wordsize(64), 50253880, 5)])
612
             # sample: 3926235424 (amd64/Linux, 15/2/2012)
613 614
             # 2012-10-02 81879216
             # 2012-09-20 87254264 amd64/Linux
615
             # 2013-09-18 90587232 amd64/Linux
Austin Seipp's avatar
Austin Seipp committed
616 617
             # 2013-11-21 86795752 amd64/Linux, GND via Coercible and counters
             #                                  for constraints solving
618 619
             # 2014-08-29 73639840 amd64/Linux, w/w for INLINABLE things
             # 2014-10-08 73639840 amd64/Linux, Burning Bridges and other small changes
620
             # 2014-11-06 271028976       Linux, Accept big regression;
621
             #   See Note [An alternative story for the inert substitution] in TcFlatten
622
             # 2014-12-08 234790312 Constraint solver perf improvements (esp kick-out)
623 624
             # 2014-12-16 231155640 Mac  Flattener parameterized over roles;
             #                           some optimization
625
             # 2015-03-17 53424304  Mac  Better depth checking; fails earlier
626
             # 2015-06-09 38834096  Better "improvement"; I'm not sure whey it improves things
627 628 629
             # 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
630
             # 2016-09-15 42445672  Linux; fixing #12422
631
             # 2016-09-25 41832056  amd64/Linux, Rework handling of names (D2469)
632 633 634
             # 2016-10-25 52597024  amd64/Linux, the test now passes (hooray), and so
             #                          allocates more because it goes right down the
             #                          compilation pipeline
635 636
             # 2017-01-24 57861352  amd64/Linux, very likely due to the top-level strings
             #                          in Core patch.
637 638 639 640
             # 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
Simon Peyton Jones's avatar
Simon Peyton Jones committed
641
      ],
642
      compile, ['-freduction-depth=50'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
643 644 645

test('T6048',
     [ only_ways(['optasm']),
646
      compiler_stats_num_field('bytes allocated',
647
          [(wordsize(32), 55701280, 10),
648 649
            # prev:       38000000 (x86/Linux)
            # 2012-10-08: 48887164 (x86/Linux)
650
            # 2014-04-04: 62618072 (x86 Windows, 64 bit machine)
651
            # 2014-09-03: 56315812 (x86 Windows, w/w for INLINABLE)
652
            # 2014-12-01: 49987836 (x86 Windows)
653
            # 2016-04-06: 55701280 (x86/Linux, 64-bit machine)
654

655
           (wordsize(64),  94327392, 10)])
656
             # 18/09/2012  97247032 amd64/Linux
657
             # 16/01/2014 108578664 amd64/Linux (unknown, likely foldl-via-foldr)
658
             # 18/01/2014  95960720 amd64/Linux Call Arity improvements
Austin Seipp's avatar
Austin Seipp committed
659
             # 28/02/2014 105556793 amd64/Linux (unknown, tweak in base/4d9e7c9e3 resulted in change)
Joachim Breitner's avatar
Joachim Breitner committed
660
             # 05/03/2014 110646312 amd64/Linux Call Arity became more elaborate
661
             # 14/07/2014 125431448 amd64/Linux unknown reason. Even worse in GHC-7.8.3. *shurg*
662
             # 29/08/2014 108354472 amd64/Linux w/w for INLINABLE things
663
             # 14/09/2014  88186056 amd64/Linux BPP part1 change (more NoImplicitPreludes in base)
664
             # 08/01/2014  95946688 amd64/Linux Mostly 4c834fd. Occasional spikes to 103822120!
Ben Gamari's avatar
Ben Gamari committed
665
             # 11/03/2016 108225624 amd64/Linux unknown reason sadly; likely gradual creep.
666
             # 25/11/2016  94327392 amd64/Linux Back down again hooray; still not sure why
Simon Peyton Jones's avatar
Simon Peyton Jones committed
667 668
      ],
      compile,[''])
669 670 671 672

test('T9020',
     [ only_ways(['optasm']),
      compiler_stats_num_field('bytes allocated',
673 674 675
          [(wordsize(32), 343005716, 10),
           # Original:    381360728
           # 2014-07-31:  343005716 (Windows) (general round of updates)
676
           (wordsize(64), 764866144, 10)])
677 678
           # prev:        795469104
           # 2014-07-17:  728263536 (general round of updates)
Joachim Breitner's avatar
Joachim Breitner committed
679
           # 2014-09-10:  785871680 post-AMP-cleanup
David Feuer's avatar
David Feuer committed
680
           # 2014-11-03:  680162056 Further Applicative and Monad adjustments
681
           # 2015-10-21:  786189008 Make stronglyConnCompFromEdgedVertices deterministic
682
           # 2016-01-26:  698401736 improvement from using ExpTypes instead of ReturnTvs
683
           # 2016-04-06:  852298336 Refactoring of CSE #11781
684
           # 2016-04-06:  698401736 Use thenIO in Applicative IO
685
           # 2017-02-03:  764866144 Join points
686 687
      ],
      compile,[''])
688 689 690

test('T9675',
     [ only_ways(['optasm']),
691
       compiler_stats_num_field('max_bytes_used', # Note [residency]
692
          [(wordsize(64), 38776008, 15),
693
          # 2014-10-13    29596552
694
          # 2014-10-13    26570896   seq the DmdEnv in seqDmdType as well
695
          # 2014-10-13    18582472   different machines giving different results..
696
          # 2014-10-13    22220552   use the mean
697
          # 2015-06-21    28056344   switch to `+RTS -G1`, tighten bound to 15%
698
          # 2015-10-28    23776640   emit Typeable at definition site
699
          # 2015-12-11    30837312   TypeInType (see #11196)
700
          # 2016-04-14    38776008   Final demand analyzer run
701 702 703
           (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)
704
          ]),
705
       compiler_stats_num_field('peak_megabytes_allocated', # Note [residency]
Simon Marlow's avatar
Simon Marlow committed
706
          [(wordsize(64), 121, 15),
707
          # 2014-10-13    66
708
          # 2014-10-13    58         seq the DmdEnv in seqDmdType as well
709
          # 2014-10-13    49         different machines giving different results...
710
          # 2014-10-13    53         use the mean
711 712
          # 2015-06-15    44         reduced for some reason
          # 2015-06-21    105        switch to `+RTS -G1`
713
          # 2015-12-04    88         new pattern checker (D1535)
714
          # 2015-12-11    113        TypeInType (see #11196)
715
          # 2016-04-14    144        Final demand analyzer run
Simon Marlow's avatar
Simon Marlow committed
716
          # 2016-07-26    121        Unboxed sums?
717
            (wordsize(32), 56, 15)
718
          # 2015-07-11    56         (x86/Linux, 64-bit machine) use +RTS -G1
719 720
          ]),
       compiler_stats_num_field('bytes allocated',
721
          [(wordsize(64), 608284152, 10)
722
          # 2014-10-13    544489040
723
          # 2015-10-28    608284152  emit Typeable at definition site
724
          ,(wordsize(32), 279480696, 10)
725
          # 2015-07-11    279480696  (x86/Linux, 64-bit machine) use +RTS -G1
726
          ]),
727 728

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
729
       extra_hc_opts('+RTS -G1 -RTS')
730 731 732
      ],
     compile,
     [''])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
733 734 735 736

test('T9872a',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
737
          [(wordsize(64), 3134866040    , 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
738
          # 2014-12-10    5521332656    Initally created
739
          # 2014-12-16    5848657456    Flattener parameterized over roles
740
          # 2014-12-18    2680733672    Reduce type families even more eagerly
741
          # 2015-12-11    3581500440    TypeInType (see #11196)
Joachim Breitner's avatar
Joachim Breitner committed
742
          # 2016-04-07    3352882080    CSE improvements
743
          # 2016-10-19    3134866040    Refactor traceRn interface (#12617)
744 745 746
           (wordsize(32), 1740903516, 5)
          # was           1325592896
          # 2016-04-06    1740903516    x86/Linux
Simon Peyton Jones's avatar
Simon Peyton Jones committed
747 748 749 750 751 752 753 754
          ]),
      ],
     compile_fail,
     [''])

test('T9872b',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
Richard Eisenberg's avatar
Richard Eisenberg committed
755
          [(wordsize(64), 4069522928, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
756