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

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

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

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

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

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

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

225
      compiler_stats_num_field('bytes allocated',
226 227 228
          [(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
229

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

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

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

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

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

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

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

361 362 363
       only_ways(['normal']),

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

Ian Lynagh's avatar
Ian Lynagh committed
369 370 371 372 373
test('T4007',
     normal,
     run_command,
     ['$MAKE -s --no-print-directory T4007'])

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

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

407 408 409
       only_ways(['normal'])
      ],
     compile,
410
     ['-freduction-depth=300'])
411

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

Simon Peyton Jones's avatar
Simon Peyton Jones committed
432 433 434 435 436
       only_ways(['normal'])
      ],
     compile,
     [''])

437
test('parsing001',
438 439
     [compiler_stats_num_field('bytes allocated',
          [(wordsize(32), 274000576, 10),
440
           (wordsize(64), 581551384, 5)]),
441
        # expected value: 587079016 (amd64/Linux)
442
        # 2016-09-01:     581551384 (amd64/Linux) Restore w/w limit (#11565)
443 444 445 446 447
       only_ways(['normal']),
      ],
     compile_fail, [''])


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

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

test('T5321Fun',
     [ only_ways(['normal']),  # no optimisation for this one
496
       compiler_stats_num_field('bytes allocated',
497
           [(wordsize(32), 279922360, 10),
498 499 500
             # prev:       300000000
             # 2012-10-08: 344416344 x86/Linux
             #  (increase due to new codegen)
501
             # 2014-09-03: 299656164     (specialisation and inlining)
502
             # 10/12/2014: 206406188     #  Improvements in constraint solver
503
             # 2016-04-06: 279922360 x86/Linux
504
            (wordsize(64), 497356688, 5)])
505
             # prev:       585521080
506 507 508 509
             # 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
510
             # 10/09/2014: 601629032     #  post-AMP-cleanup
511
             # 06/11/2014: 541287000     #  Simon's flat-skol changes to the constraint solver
512
             # 10/12/2014: 408110888     #  Improvements in constraint solver
513
             # 16/12/2014: 429921312     #  Flattener parameterized over roles
514 515 516
             # 10/08/2015: 509921312
             #  (undefined now takes an implicit parameter and GHC -O0 does
             #  not recognize that the application is bottom)
517
             # 11/12/2015: 565883176     #  TypeInType (see #11196)
518 519 520
             # 06/01/2017: 497356688     #  Small coercion optimisations
                                         #  The actual decrease was only 2%; earlier
                                         #    commits had drifted down
521 522 523 524 525
      ],
      compile,[''])

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

test('T5642',
     [ only_ways(['normal']),
Ben Gamari's avatar
Ben Gamari committed
560
       normal,
561
       compiler_stats_num_field('bytes allocated',
562
           [(wordsize(32), 462677300, 10),
563
                     # sample from x86/Linux
Gabor Greif's avatar
Typos  
Gabor Greif committed
564
            # prev:        650000000
565
            # 2014-09-03:  753045568
566
            # 2014-12-10:  641085256 Improvements in constraints solver
567
            # 2016-04-06:  462677300
568

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

test('T5837',
     [ only_ways(['normal']),
591
      compiler_stats_num_field('bytes allocated',
592
          [(wordsize(32), 24199320, 10),
593
             # 40000000 (x86/Linux)
594 595
             # 2013-11-13:  45520936 (x86/Windows, 64bit machine)
             # 2014-09-03:  37096484 (Windows laptop, w/w for INLINABLE things
596
             # 2014-12-01: 135914136 (Windows laptop, regression see below)
597 598
             # 2014-12-08: 115905208  Constraint solver perf improvements (esp kick-out)
             # 2016-04-06: 24199320  (x86/Linux, 64-bit machine) TypeInType
599

600
           (wordsize(64), 52597024, 10)])
601
             # sample: 3926235424 (amd64/Linux, 15/2/2012)
602 603
             # 2012-10-02 81879216
             # 2012-09-20 87254264 amd64/Linux
604
             # 2013-09-18 90587232 amd64/Linux
Austin Seipp's avatar
Austin Seipp committed
605 606
             # 2013-11-21 86795752 amd64/Linux, GND via Coercible and counters
             #                                  for constraints solving
607 608
             # 2014-08-29 73639840 amd64/Linux, w/w for INLINABLE things
             # 2014-10-08 73639840 amd64/Linux, Burning Bridges and other small changes
609
             # 2014-11-06 271028976       Linux, Accept big regression;
610
             #   See Note [An alternative story for the inert substitution] in TcFlatten
611
             # 2014-12-08 234790312 Constraint solver perf improvements (esp kick-out)
612 613
             # 2014-12-16 231155640 Mac  Flattener parameterized over roles;
             #                           some optimization
614
             # 2015-03-17 53424304  Mac  Better depth checking; fails earlier
615
             # 2015-06-09 38834096  Better "improvement"; I'm not sure whey it improves things
616 617 618
             # 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
619
             # 2016-09-15 42445672  Linux; fixing #12422
620
             # 2016-09-25 41832056  amd64/Linux, Rework handling of names (D2469)
621 622 623
             # 2016-10-25 52597024  amd64/Linux, the test now passes (hooray), and so
             #                          allocates more because it goes right down the
             #                          compilation pipeline
Simon Peyton Jones's avatar
Simon Peyton Jones committed
624
      ],
625
      compile, ['-freduction-depth=50'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
626 627 628

test('T6048',
     [ only_ways(['optasm']),
629
      compiler_stats_num_field('bytes allocated',
630
          [(wordsize(32), 55701280, 10),
631 632
            # prev:       38000000 (x86/Linux)
            # 2012-10-08: 48887164 (x86/Linux)
633
            # 2014-04-04: 62618072 (x86 Windows, 64 bit machine)
634
            # 2014-09-03: 56315812 (x86 Windows, w/w for INLINABLE)
635
            # 2014-12-01: 49987836 (x86 Windows)
636
            # 2016-04-06: 55701280 (x86/Linux, 64-bit machine)
637

638
           (wordsize(64),  94327392, 10)])
639
             # 18/09/2012  97247032 amd64/Linux
640
             # 16/01/2014 108578664 amd64/Linux (unknown, likely foldl-via-foldr)
641
             # 18/01/2014  95960720 amd64/Linux Call Arity improvements
Austin Seipp's avatar
Austin Seipp committed
642
             # 28/02/2014 105556793 amd64/Linux (unknown, tweak in base/4d9e7c9e3 resulted in change)
Joachim Breitner's avatar
Joachim Breitner committed
643
             # 05/03/2014 110646312 amd64/Linux Call Arity became more elaborate
644
             # 14/07/2014 125431448 amd64/Linux unknown reason. Even worse in GHC-7.8.3. *shurg*
645
             # 29/08/2014 108354472 amd64/Linux w/w for INLINABLE things
646
             # 14/09/2014  88186056 amd64/Linux BPP part1 change (more NoImplicitPreludes in base)
647
             # 08/01/2014  95946688 amd64/Linux Mostly 4c834fd. Occasional spikes to 103822120!
Ben Gamari's avatar
Ben Gamari committed
648
             # 11/03/2016 108225624 amd64/Linux unknown reason sadly; likely gradual creep.
649
             # 25/11/2016  94327392 amd64/Linux Back down again hooray; still not sure why
Simon Peyton Jones's avatar
Simon Peyton Jones committed
650 651
      ],
      compile,[''])
652 653 654 655

test('T9020',
     [ only_ways(['optasm']),
      compiler_stats_num_field('bytes allocated',
656 657 658
          [(wordsize(32), 343005716, 10),
           # Original:    381360728
           # 2014-07-31:  343005716 (Windows) (general round of updates)
659
           (wordsize(64), 698401736, 10)])
660 661
           # prev:        795469104
           # 2014-07-17:  728263536 (general round of updates)
Joachim Breitner's avatar
Joachim Breitner committed
662
           # 2014-09-10:  785871680 post-AMP-cleanup
David Feuer's avatar
David Feuer committed
663
           # 2014-11-03:  680162056 Further Applicative and Monad adjustments
664
           # 2015-10-21:  786189008 Make stronglyConnCompFromEdgedVertices deterministic
665
           # 2016-01-26:  698401736 improvement from using ExpTypes instead of ReturnTvs
666
           # 2016-04-06:  852298336 Refactoring of CSE #11781
667
           # 2016-04-06:  698401736 Use thenIO in Applicative IO
668 669
      ],
      compile,[''])
670 671 672

test('T9675',
     [ only_ways(['optasm']),
673
       compiler_stats_num_field('max_bytes_used', # Note [residency]
674
          [(wordsize(64), 38776008, 15),
675
          # 2014-10-13    29596552
676
          # 2014-10-13    26570896   seq the DmdEnv in seqDmdType as well
677
          # 2014-10-13    18582472   different machines giving different results..
678
          # 2014-10-13    22220552   use the mean
679
          # 2015-06-21    28056344   switch to `+RTS -G1`, tighten bound to 15%
680
          # 2015-10-28    23776640   emit Typeable at definition site
681
          # 2015-12-11    30837312   TypeInType (see #11196)
682
          # 2016-04-14    38776008   Final demand analyzer run
683 684 685
           (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)
686
          ]),
687
       compiler_stats_num_field('peak_megabytes_allocated', # Note [residency]
Simon Marlow's avatar
Simon Marlow committed
688
          [(wordsize(64), 121, 15),
689
          # 2014-10-13    66
690
          # 2014-10-13    58         seq the DmdEnv in seqDmdType as well
691
          # 2014-10-13    49         different machines giving different results...
692
          # 2014-10-13    53         use the mean
693 694
          # 2015-06-15    44         reduced for some reason
          # 2015-06-21    105        switch to `+RTS -G1`
695
          # 2015-12-04    88         new pattern checker (D1535)
696
          # 2015-12-11    113        TypeInType (see #11196)
697
          # 2016-04-14    144        Final demand analyzer run
Simon Marlow's avatar
Simon Marlow committed
698
          # 2016-07-26    121        Unboxed sums?
699
            (wordsize(32), 56, 15)
700
          # 2015-07-11    56         (x86/Linux, 64-bit machine) use +RTS -G1
701 702
          ]),
       compiler_stats_num_field('bytes allocated',
703
          [(wordsize(64), 608284152, 10)
704
          # 2014-10-13    544489040
705
          # 2015-10-28    608284152  emit Typeable at definition site
706
          ,(wordsize(32), 279480696, 10)
707
          # 2015-07-11    279480696  (x86/Linux, 64-bit machine) use +RTS -G1
708
          ]),
709 710

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
711
       extra_hc_opts('+RTS -G1 -RTS')
712 713 714
      ],
     compile,
     [''])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
715 716 717 718

test('T9872a',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
719
          [(wordsize(64), 3134866040    , 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
720
          # 2014-12-10    5521332656    Initally created
721
          # 2014-12-16    5848657456    Flattener parameterized over roles
722
          # 2014-12-18    2680733672    Reduce type families even more eagerly
723
          # 2015-12-11    3581500440    TypeInType (see #11196)
Joachim Breitner's avatar
Joachim Breitner committed
724
          # 2016-04-07    3352882080    CSE improvements
725
          # 2016-10-19    3134866040    Refactor traceRn interface (#12617)
726 727 728
           (wordsize(32), 1740903516, 5)
          # was           1325592896
          # 2016-04-06    1740903516    x86/Linux
Simon Peyton Jones's avatar
Simon Peyton Jones committed
729 730 731 732 733 734 735 736
          ]),
      ],
     compile_fail,
     [''])

test('T9872b',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
Richard Eisenberg's avatar
Richard Eisenberg committed
737
          [(wordsize(64), 4069522928, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
738
          # 2014-12-10    6483306280    Initally created
739
          # 2014-12-16    6892251912    Flattener parameterized over roles
740
          # 2014-12-18    3480212048    Reduce type families even more eagerly
741 742
          # 2015-12-11    5199926080    TypeInType (see #11196)
          # 2016-02-08    4918990352    Improved a bit by tyConRolesRepresentational
743
          # 2016-04-06:   4600233488    Refactoring of CSE #11781
Richard Eisenberg's avatar
Richard Eisenberg committed
744
          # 2016-09-15:   4069522928    Fix #12422
745 746 747
           (wordsize(32), 2422750696, 5)
          # was           1700000000
          # 2016-04-06    2422750696    x86/Linux
Simon Peyton Jones's avatar
Simon Peyton Jones committed
748 749 750 751
          ]),
      ],
     compile_fail,
     [''])
752 753 754
test('T9872c',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
Richard Eisenberg's avatar
Richard Eisenberg committed
755
          [(wordsize(64), 3702580928, 5),
756
          # 2014-12-10    5495850096    Initally created
757
          # 2014-12-16    5842024784    Flattener parameterized over roles
758
          # 2014-12-18    2963554096    Reduce type families even more eagerly
759 760
          # 2015-12-11    4723613784    TypeInType (see #11196)
          # 2016-02-08    4454071184    Improved a bit by tyConRolesRepresentational
761
          # 2016-04-06:   4306667256    Refactoring of CSE #11781
Richard Eisenberg's avatar
Richard Eisenberg committed
762
          # 2016-09-15:   3702580928    Fixing #12422
763 764 765
           (wordsize(32), 2257242896, 5)
          # was           1500000000
          # 2016-04-06    2257242896
766 767 768 769
          ]),
      ],
     compile_fail,
     [''])
770 771
test('T9872d',
     [ only_ways(['normal']),
772
       compiler_stats_num_field('bytes allocated',
773
          [(wordsize(64), 478169352, 5),
774 775
          # 2014-12-18    796071864   Initally created
          # 2014-12-18    739189056   Reduce type families even more eagerly
776
          # 2015-01-07    687562440   TrieMap leaf compression