all.T 49.1 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)
Ben Gamari's avatar
Ben Gamari committed
42
           (wordsize(64), 83, 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
      compiler_stats_num_field('max_bytes_used',
58
          [(platform('i386-unknown-mingw32'), 5719436, 20),
59 60
                                 # 2010-05-17 5717704 (x86/Windows)
                                 # 2013-02-10 5159748 (x86/Windows)
61
                                 # 2013-02-10 5030080 (x86/Windows)
62
                                 # 2013-11-13 7295012 (x86/Windows, 64bit machine)
63
                                 # 2014-04-24 5719436 (x86/Windows, 64bit machine)
64
           (wordsize(32), 9093608, 1),
65 66
             #            6707308 (x86/OS X)
             # 2009-12-31 6149572 (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
67
             # 2014-01-22 6429864 (x86/Linux)
68
             # 2014-06-29 5949188 (x86/Linux)
69
             # 2015-07-11 6241108 (x86/Linux, 64bit machine) use +RTS -G1
70
             # 2016-04-06 9093608 (x86/Linux, 64bit machine)
lukemaurer's avatar
lukemaurer committed
71
           (wordsize(64), 19924328, 15)]),
Joachim Breitner's avatar
Joachim Breitner committed
72
             # 2014-09-10 10463640, 10  # post-AMP-update (somewhat stabelish)
Austin Seipp's avatar
Austin Seipp committed
73
               # looks like the peak is around ~10M, but we're
74 75 76
               # 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
77
               # See Note [residency] to get an accurate view.
78 79
             # 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
80
             # 2015-07-11 11670120 (amd64/Linux)
81
             # 2015-10-28 15017528 (amd64/Linux) emit typeable at definition site
Ben Gamari's avatar
Ben Gamari committed
82
             # 2016-10-12 17285216 (amd64/Linux) it's not entirely clear why
lukemaurer's avatar
lukemaurer committed
83
             # 2017-02-01 19924328 (amd64/Linux) Join points (#12988)
84
      compiler_stats_num_field('bytes allocated',
85
          [(platform('i386-unknown-mingw32'), 301784492, 5),
86 87
                                 #            215582916 (x86/Windows)
                                 # 2012-10-29 298921816 (x86/Windows)
88
                                 # 2013-02-10 310633884 (x86/Windows)
89
                                 # 2013-11-13 317975916 (x86/Windows, 64bit machine)
90
                                 # 2014-04-04 301784492 (x86/Windows, 64bit machine)
91
           (wordsize(32), 344730660, 1),
92 93 94 95
             #            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
96
             # 2014-01-22 316103268 (x86/Linux)
97
             # 2014-06-29 303300692 (x86/Linux)
98
             # 2015-07-11 288699104 (x86/Linux, 64-bit machine) use +RTS -G1
99
             # 2016-04-06 344730660 (x86/Linux, 64-bit machine)
Ben Gamari's avatar
Ben Gamari committed
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
           (wordsize(64), 831733376, 5)]),
             # 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
122
      only_ways(['normal']),
123

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

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

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

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

      # Use `+RTS -G1` for more stable residency measurements. Note [residency].
205
      extra_hc_opts('+RTS -G1 -RTS')
Simon Marlow's avatar
Simon Marlow committed
206 207 208
      ],
     compile,
     [''])
Ian Lynagh's avatar
Ian Lynagh committed
209

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

232
      compiler_stats_num_field('bytes allocated',
233 234 235
          [(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
236

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

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

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
280
       extra_hc_opts('+RTS -G1 -RTS')
281
       ],
Simon Peyton Jones's avatar
Simon Peyton Jones committed
282 283 284
     compile,
     [''])

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

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

319 320 321 322 323 324 325 326 327
           (wordsize(64), 306222424, 5)]),
            # (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
328
            # (amd64/Linux) (2014-07-17): 332702112, general round of updates
329
            # (amd64/Linux) (2014-08-29): 313638592, w/w for INLINABLE things
330 331 332 333 334
            # (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
335
            #                                        much less code for Monad instances
336
            # (amd64/Linux) (2015-12-01): 264952256, Regression due to Simon's wildcard refactor
337
            #                                        Tracked as #11151.
338
            # (amd64/Linux) (2015-12-11): 304344936, Regression due to TypeInType
339
            #                                        Tracked as #11196
340
            # (amd64/Linux) (2016-04-15): 287460128  Improvement due to using coercionKind instead
341
            #                                        of zonkTcType (Trac #11882)
342
            # (amd64/Darwin) (2017-01-23): 306222424 Presumably creep from recent changes (Typeable?)
343

344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367
###################################
# 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
368

369 370 371
       only_ways(['normal']),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
372
       extra_hc_opts('+RTS -G1 -RTS')
Ian Lynagh's avatar
Ian Lynagh committed
373 374 375 376
      ],
     compile,
     [''])

Ian Lynagh's avatar
Ian Lynagh committed
377 378 379 380 381
test('T4007',
     normal,
     run_command,
     ['$MAKE -s --no-print-directory T4007'])

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

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

415 416 417
       only_ways(['normal'])
      ],
     compile,
418
     ['-freduction-depth=300'])
419

Simon Peyton Jones's avatar
Simon Peyton Jones committed
420
test('T5631',
421
     [compiler_stats_num_field('bytes allocated',
422
          [(wordsize(32), 570137436, 10),
423
        # expected value: 392904228 (x86/Linux)
424
        # 2014-04-04:     346389856 (x86 Windows, 64 bit machine)
425
        # 2014-12-01:     390199244 (Windows laptop)
426
        # 2016-04-06:     570137436 (amd64/Linux) many reasons
Ben Gamari's avatar
Ben Gamari committed
427
           (wordsize(64), 1517484488, 5)]),
428
        # expected value: 774595008 (amd64/Linux):
429
        # expected value: 735486328 (amd64/Linux) 2012/12/12:
430
        # expected value: 690742040 (amd64/Linux) Call Arity improvements
431
        # 2014-09-09:     739704712 (amd64/Linux) AMP changes
432
        # 2014-11-04:     776121120 (amd64/Linux) new-flatten-skolems
433
        # 2015-06-01:     812288344 (amd64/Linux) unknown cause
434 435 436
        # 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
437
        # 2016-10-19:     1024926024 (amd64/Linux) Refactor traceRn interface (#12617)
438
        # 2016-11-10:     1077429456 (amd64/Linux) Stop -dno-debug-output suppressing -ddump-tc-trace
Ben Gamari's avatar
Ben Gamari committed
439
        # 2017-02-17:     1517484488 (amd64/Linux) Type-indexed Typeable
Simon Peyton Jones's avatar
Simon Peyton Jones committed
440 441 442 443 444
       only_ways(['normal'])
      ],
     compile,
     [''])

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


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

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

test('T5321Fun',
     [ only_ways(['normal']),  # no optimisation for this one
505
       compiler_stats_num_field('bytes allocated',
506
           [(wordsize(32), 279922360, 10),
507 508 509
             # prev:       300000000
             # 2012-10-08: 344416344 x86/Linux
             #  (increase due to new codegen)
510
             # 2014-09-03: 299656164     (specialisation and inlining)
511
             # 2014-12-10: 206406188     #  Improvements in constraint solver
512
             # 2016-04-06: 279922360 x86/Linux
513
            (wordsize(64), 524706256, 5)])
514
             # prev:       585521080
515 516 517 518 519 520 521 522 523
             # 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
524 525
             #  (undefined now takes an implicit parameter and GHC -O0 does
             #  not recognize that the application is bottom)
526 527
             # 2015-12-11: 565883176     #  TypeInType (see #11196)
             # 2017-01-06: 497356688     #  Small coercion optimisations
528 529
                                         #  The actual decrease was only 2%; earlier
                                         #    commits had drifted down
530
             # 2017-01-22: 525895608     #  Allow top-level string literals in Core. I'm not
531 532 533 534 535
                                         #    convinced that this patch is
                                         #    responsible for all of this
                                         #    change, however. Namely I am
                                         #    quite skeptical of the downward
                                         #    "drift" reported above
536 537
             # 2017-01-31: 498135752     #  Join points (#12988)
             # 2017-02-23: 524706256     #  Type-indexed Typeable? (on Darwin)
538 539 540 541 542
      ],
      compile,[''])

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

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

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

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

617 618 619
           (platform('x86_64-unknown-mingw32'), 59161648, 7),
             # 2017-02-19                        59161648 (x64/Windows) - Unknown

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

test('T6048',
     [ only_ways(['optasm']),
660
      compiler_stats_num_field('bytes allocated',
661
          [(wordsize(32), 55701280, 10),
662 663
            # prev:       38000000 (x86/Linux)
            # 2012-10-08: 48887164 (x86/Linux)
664
            # 2014-04-04: 62618072 (x86 Windows, 64 bit machine)
665
            # 2014-09-03: 56315812 (x86 Windows, w/w for INLINABLE)
666
            # 2014-12-01: 49987836 (x86 Windows)
667
            # 2016-04-06: 55701280 (x86/Linux, 64-bit machine)
668

Ben Gamari's avatar
Ben Gamari committed
669 670 671 672 673 674 675 676 677 678 679 680 681
           (wordsize(64), 115714216, 10)])
             # 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
682 683
      ],
      compile,[''])
684 685 686 687

test('T9020',
     [ only_ways(['optasm']),
      compiler_stats_num_field('bytes allocated',
688 689 690
          [(wordsize(32), 343005716, 10),
           # Original:    381360728
           # 2014-07-31:  343005716 (Windows) (general round of updates)
691
           (wordsize(64), 764866144, 10)])
692 693
           # prev:        795469104
           # 2014-07-17:  728263536 (general round of updates)
Joachim Breitner's avatar
Joachim Breitner committed
694
           # 2014-09-10:  785871680 post-AMP-cleanup
David Feuer's avatar
David Feuer committed
695
           # 2014-11-03:  680162056 Further Applicative and Monad adjustments
696
           # 2015-10-21:  786189008 Make stronglyConnCompFromEdgedVertices deterministic
697
           # 2016-01-26:  698401736 improvement from using ExpTypes instead of ReturnTvs
698
           # 2016-04-06:  852298336 Refactoring of CSE #11781
699
           # 2016-04-06:  698401736 Use thenIO in Applicative IO
700
           # 2017-02-03:  764866144 Join points
701 702
      ],
      compile,[''])
703 704 705

test('T9675',
     [ only_ways(['optasm']),
706
       compiler_stats_num_field('max_bytes_used', # Note [residency]
707
          [(wordsize(64), 38776008, 15),
708
          # 2014-10-13    29596552
709
          # 2014-10-13    26570896   seq the DmdEnv in seqDmdType as well
710
          # 2014-10-13    18582472   different machines giving different results..
711
          # 2014-10-13    22220552   use the mean
712
          # 2015-06-21    28056344   switch to `+RTS -G1`, tighten bound to 15%
713
          # 2015-10-28    23776640   emit Typeable at definition site
714
          # 2015-12-11    30837312   TypeInType (see #11196)
715
          # 2016-04-14    38776008   Final demand analyzer run
716 717 718
           (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)
719
          ]),
720
       compiler_stats_num_field('peak_megabytes_allocated', # Note [residency]
Simon Marlow's avatar
Simon Marlow committed
721
          [(wordsize(64), 121, 15),
722
          # 2014-10-13    66
723
          # 2014-10-13    58         seq the DmdEnv in seqDmdType as well
724
          # 2014-10-13    49         different machines giving different results...
725
          # 2014-10-13    53         use the mean
726 727
          # 2015-06-15    44         reduced for some reason
          # 2015-06-21    105        switch to `+RTS -G1`
728
          # 2015-12-04    88         new pattern checker (D1535)
729
          # 2015-12-11    113        TypeInType (see #11196)
730
          # 2016-04-14    144        Final demand analyzer run
Simon Marlow's avatar
Simon Marlow committed
731
          # 2016-07-26    121        Unboxed sums?
732
            (wordsize(32), 56, 15)
733
          # 2015-07-11    56         (x86/Linux, 64-bit machine) use +RTS -G1
734 735
          ]),
       compiler_stats_num_field('bytes allocated',
Ben Gamari's avatar
Ben Gamari committed
736
          [(wordsize(64), 731171072, 10)
737
          # 2014-10-13    544489040
738
          # 2015-10-28    608284152  emit Typeable at definition site
Ben Gamari's avatar
Ben Gamari committed
739
          # 2017-02-17    731171072  Type-indexed Typeable
740
          ,(wordsize(32), 279480696, 10)
741
          # 2015-07-11    279480696  (x86/Linux, 64-bit machine) use +RTS -G1
742
          ]),
743 744

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
745
       extra_hc_opts('+RTS -G1 -RTS')
746 747 748
      ],
     compile,
     [''])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
749 750 751 752

test('T9872a',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
Ben Gamari's avatar
Ben Gamari committed
753
          [(wordsize(64), 3298422648, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
754
          # 2014-12-10    5521332656    Initally created
755
          # 2014-12-16    5848657456    Flattener parameterized over roles
756
          # 2014-12-18    2680733672    Reduce type families even more eagerly
757
          # 2015-12-11    3581500440    TypeInType (see #11196)
Joachim Breitner's avatar
Joachim Breitner committed
758
          # 2016-04-07    3352882080    CSE improvements
759
          # 2016-10-19    3134866040    Refactor traceRn interface (#12617)
Ben Gamari's avatar
Ben Gamari committed
760
          # 2017-02-17    3298422648    Type-indexed Typeable
761 762 763
           (wordsize(32), 1740903516, 5)
          # was           1325592896
          # 2016-04-06    1740903516    x86/Linux
Simon Peyton Jones's avatar
Simon Peyton Jones committed
764 765 766 767 768 769 770 771
          ]),
      ],
     compile_fail,
     [''])

test('T9872b',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
Richard Eisenberg's avatar
Richard Eisenberg committed
772
          [(wordsize(64), 4069522928, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
773
          # 2014-12-10    6483306280    Initally created
774
          # 2014-12-16    6892251912    Flattener parameterized over roles
775
          # 2014-12-18    3480212048    Reduce type families even more eagerly
776 777
          # 2015-12-11    5199926080    TypeInType (see #11196)
          # 2016-02-08    4918990352    Improved a bit by tyConRolesRepresentational
778
          # 2016-04-06:   4600233488    Refactoring of CSE #11781
Richard Eisenberg's avatar
Richard Eisenberg committed
779
          # 2016-09-15:   4069522928    Fix #12422
780 781 782
           (wordsize(32), 2422750696, 5)
          # was           1700000000
          # 2016-04-06    2422750696    x86/Linux
Simon Peyton Jones's avatar
Simon Peyton Jones committed
783 784 785 786
          ]),
      ],
     compile_fail,
     [''])
787 788 789
test('T9872c',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
Richard Eisenberg's avatar
Richard Eisenberg committed
790
          [(wordsize(64), 3702580928, 5),
791
          # 2014-12-10    5495850096    Initally created
792
          # 2014-12-16    5842024784    Flattener parameterized over roles