all.T 30.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',
Simon Marlow's avatar
Simon Marlow committed
31
     [compiler_stats_num_field('peak_megabytes_allocated', # Note [residency]
32
          [(wordsize(32), 17, 15),
33 34 35 36 37
             # 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)
38
             # 2013-11-13 17 (x86/Windows, 64bit machine)
39
           (wordsize(64), 30, 20)]),
40 41 42 43
             #            28 (amd64/Linux)
             #            34 (amd64/Linux)
             # 2012-09-20 23 (amd64/Linux)
             # 2012-10-03 25 (amd64/Linux if .hi exists)
44
             # 2013-02-13 23, but unstable so increased to 10% range
Simon Peyton Jones's avatar
Simon Peyton Jones committed
45
             # 2013-02-13 27, very unstable!
Joachim Breitner's avatar
Joachim Breitner committed
46
             # 2014-09-10 29 (amd64/Linux) post-AMP-cleanup
47 48
             # 2013-09-11 30, 10 (amd64/Linux)
             # 2013-09-11 30, 15 (adapt to Phab CI)
49
      compiler_stats_num_field('max_bytes_used',
50
          [(platform('i386-unknown-mingw32'), 5719436, 20),
51 52
                                 # 2010-05-17 5717704 (x86/Windows)
                                 # 2013-02-10 5159748 (x86/Windows)
53
                                 # 2013-02-10 5030080 (x86/Windows)
54
                                 # 2013-11-13 7295012 (x86/Windows, 64bit machine)
55
                                 # 2014-04-24 5719436 (x86/Windows, 64bit machine)
56
           (wordsize(32), 5949188, 1),
57 58
             #            6707308 (x86/OS X)
             # 2009-12-31 6149572 (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
59
             # 2014-01-22 6429864 (x86/Linux)
60
             # 2014-06-29 5949188 (x86/Linux)
61
           (wordsize(64), 10000000, 15)]),
Joachim Breitner's avatar
Joachim Breitner committed
62
             # 2014-09-10 10463640, 10  # post-AMP-update (somewhat stabelish)
Austin Seipp's avatar
Austin Seipp committed
63
               # looks like the peak is around ~10M, but we're
64 65 66
               # 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
67
               # See Note [residency] to get an accurate view.
68 69
             # 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
70
      compiler_stats_num_field('bytes allocated',
71
          [(platform('i386-unknown-mingw32'), 301784492, 5),
72 73
                                 #            215582916 (x86/Windows)
                                 # 2012-10-29 298921816 (x86/Windows)
74
                                 # 2013-02-10 310633884 (x86/Windows)
75
                                 # 2013-11-13 317975916 (x86/Windows, 64bit machine)
76
                                 # 2014-04-04 301784492 (x86/Windows, 64bit machine)
77
           (wordsize(32), 303300692, 1),
78 79 80 81
             #            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
82
             # 2014-01-22 316103268 (x86/Linux)
83
             # 2014-06-29 303300692 (x86/Linux)
Joachim Breitner's avatar
Joachim Breitner committed
84
           (wordsize(64), 630299456, 5)]),
85 86 87 88 89 90 91
             # 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)
92
             # 29/08/2012 633334184 (amd64/Linux) new codegen
93
             # 18/09/2012 641959976 (amd64/Linux)
94 95 96 97 98
             # 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
99
             # 10/02/2014 660922376 (x86_64/Linux) call arity analysis
100
             # 17/07/2014 651626680 (x86_64/Linux) roundabout update
Joachim Breitner's avatar
Joachim Breitner committed
101
             # 10/09/2014 630299456 (x86_64/Linux) post-AMP-cleanup
102
      only_ways(['normal']),
103

104
      extra_hc_opts('-dcore-lint -static')
105 106
          # Leave -dcore-lint on for this one test, so that we have something
          # that will catch a regression in -dcore-lint performance.
Simon Marlow's avatar
Simon Marlow committed
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
      ],
     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',
124
     [
Simon Marlow's avatar
Simon Marlow committed
125
      compiler_stats_num_field('max_bytes_used', # Note [residency]
126
          [(wordsize(32), 26525384, 15),
127 128 129 130
             #            17725476 (x86/OS X)
             #            14593500 (Windows)
             # 2013-02-10 20651576 (x86/Windows)
             # 2013-02-10 20772984 (x86/OSX)
131
             # 2013-11-13 24009436 (x86/Windows, 64bit machine)
132
             # 2014-04-24 19882188 (x86/Windows, 64bit machine)
133 134
             # 2014-12-22 26525384 (x86/Windows) Increase due to silent superclasses?

135
           (wordsize(64), 45000000, 20)]),
136 137 138 139 140 141 142 143 144
             # 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)
145 146
             # 2014-07-14:     36670800  (amd64/Linux)
             #  (reason unknown, setting expected value somewhere in between)
147 148
             # 2015-01-22:     45000000  (amd64/Linux)
             #  varies between 40959592 and 52914488... increasing to +-20%
149

150
      compiler_stats_num_field('bytes allocated',
151
          [(wordsize(32), 1377050640, 5),
152 153 154
           # previous:     815479800  (x86/Linux)
           # (^ increase due to new codegen, see #7198)
           # 2012-10-08:  1373514844 (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
155 156
           # 2013-11-13: 1478325844  (x86/Windows, 64bit machine)
           # 2014-01-12: 1565185140  (x86/Linux)
157
           # 2013-04-04: 1377050640  (x86/Windows, 64bit machine)
Joachim Breitner's avatar
Joachim Breitner committed
158
           (wordsize(64), 2709595808, 5)]),
159 160 161 162
            # old:        1357587088 (amd64/Linux)
            # 29/08/2012: 2961778696 (amd64/Linux)
            # (^ increase due to new codegen, see #7198)
            # 18/09/2012: 2717327208 (amd64/Linux)
163 164 165
            # 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)
166
            # 12/03/2014: 2705289664 (amd64/Linux) (more call arity improvements)
167
            # 2014-17-07: 2671595512 (amd64/Linux) (round-about update)
Joachim Breitner's avatar
Joachim Breitner committed
168
            # 2014-09-10: 2709595808 (amd64/Linux) post-AMP cleanup
Simon Marlow's avatar
Simon Marlow committed
169 170 171 172
      conf_3294
      ],
     compile,
     [''])
Ian Lynagh's avatar
Ian Lynagh committed
173

Simon Peyton Jones's avatar
Simon Peyton Jones committed
174
test('T4801',
175 176
     [ # expect_broken(5224),
       # temporarily unbroken (#5227)
177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
###################################
# 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
195

196
      compiler_stats_num_field('bytes allocated',
197
          [(platform('x86_64-apple-darwin'), 434058304, 5),
198
                           # expected value: 510938976 (amd64/OS X):
Simon Marlow's avatar
Simon Marlow committed
199

200
           (wordsize(32), 203962148, 10),
Austin Seipp's avatar
Austin Seipp committed
201 202
           # prev:        185669232 (x86/OSX)
           # 2014-01-22:  211198056 (x86/Linux)
203
           # 2014-09-03:  185242032 (Windows laptop)
204
           # 2014-12-01:  203962148 (Windows laptop)
Joachim Breitner's avatar
Joachim Breitner committed
205
           (wordsize(64), 382056344, 10)]),
206 207 208
            # 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
209
            # 2014-04-08: 362939272 (amd64/Linux) cumulation of various smaller improvements over recent commits
Joachim Breitner's avatar
Joachim Breitner committed
210
            # 2014-10-08: 382056344 (amd64/Linux) stricter foldr2 488e95b
Simon Marlow's avatar
Simon Marlow committed
211

212
###################################
213
# deactivated for now, as this metric became too volatile recently
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235
#
#     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)
236 237
       only_ways(['normal']),
       extra_hc_opts('-static')
Simon Peyton Jones's avatar
Simon Peyton Jones committed
238 239 240 241
      ],
     compile,
     [''])

Ian Lynagh's avatar
Ian Lynagh committed
242
test('T3064',
243
     [# expect_broken( 3064 ),
Simon Marlow's avatar
Simon Marlow committed
244
      compiler_stats_num_field('peak_megabytes_allocated',# Note [residency]
245
          [(wordsize(32), 16, 20),
246 247
            # expected value: 14 (x86/Linux 28-06-2012):
            # 2013-11-13:     18 (x86/Windows, 64bit machine)
Austin Seipp's avatar
Austin Seipp committed
248
            # 2014-01-22:     23 (x86/Linux)
249
            # 2014-12-22:     23 (x86/Linux) death to silent superclasses
250
           (wordsize(64), 32, 20)]),
251 252
            # (amd64/Linux):            18
            # (amd64/Linux) 2012-02-07: 26
253
            # (amd64/Linux) 2013-02-12: 23; increased range to 10%
254
            # (amd64/Linux) 2013-04-03: 26
Austin Seipp's avatar
Austin Seipp committed
255
            # (amd64/Linux) 2013-09-11: 30; result of AMP patch
256
            # Increased range to 20%.  peak-usage varies from 22 to 26,
257
            #  depending on whether the old .hi file exists
258
            # (amd64/Linux) 2013-09-11: 37; better arity analysis (weird)
259
            # (amd64/Linux) (09/09/2014): 42, AMP changes (larger interfaces, more loading)
260
            # (amd64/Linux) 2014-10-13: 38: Stricter seqDmdType
261
            # (amd64/Linux) 2014-12-22: 27: death to silent superclasses
262
            # (amd64/Linux) 2015-01-22: 32: Varies from 30 to 34, at least here.
263

264
      compiler_stats_num_field('bytes allocated',
265
          [(wordsize(32), 122836340, 10),
266
            # 2011-06-28: 56380288  (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
267
            # 2012-10-30: 111189536 (x86/Windows)
268
            # 2013-11-13: 146626504 (x86/Windows, 64bit machine)
Austin Seipp's avatar
Austin Seipp committed
269
            # 2014-01-22: 162457940 (x86/Linux)
270
            # 2014-12-01: 162457940 (Windows)
271
            # 2014-12-22: 122836340 (Windows) Death to silent superclasses
272

273
           (wordsize(64), 243670824, 5)]),
274 275
            # (amd64/Linux) (28/06/2011):  73259544
            # (amd64/Linux) (07/02/2013): 224798696
eir@cis.upenn.edu's avatar
eir@cis.upenn.edu committed
276
            # (amd64/Linux) (02/08/2013): 236404384, increase from roles
Austin Seipp's avatar
Austin Seipp committed
277
            # (amd64/Linux) (11/09/2013): 290165632, increase from AMP warnings
278
            # (amd64/Linux) (22/11/2013): 308300448, GND via Coercible and counters for constraints solving
279
            # (amd64/Linux) (02/12/2013): 329795912, Coercible refactor
280
            # (amd64/Linux) (11/02/2014): 308422280, optimize Coercions in simpleOptExpr
281
            # (amd64/Linux) (23/05/2014): 324022680, unknown cause
282
            # (amd64/Linux) (2014-07-17): 332702112, general round of updates
283
            # (amd64/Linux) (2014-08-29): 313638592, w/w for INLINABLE things
284
            # (amd64/Linux) (09/09/2014): 407416464, AMP changes (larger interfaces, more loading)
285
            # (amd64/Linux) (14/09/2014): 385145080, BPP changes (more NoImplicitPrelude in base)
286
            # (amd64/Linux) (10/12/2014): 363103840, improvements in constraint solver
287
            # (Mac)         (18/12/2014): 350418600, improvements to flattener
288 289
            # (amd64/Linux) (22/12/2014): 243670824, Ha! Death to superclass constraints, makes
            #                                        much less code for Monad instances
290

291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314
###################################
# 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
315

316
       only_ways(['normal'])
Ian Lynagh's avatar
Ian Lynagh committed
317 318 319 320
      ],
     compile,
     [''])

Ian Lynagh's avatar
Ian Lynagh committed
321 322 323 324 325
test('T4007',
     normal,
     run_command,
     ['$MAKE -s --no-print-directory T4007'])

326
test('T5030',
327
     [compiler_stats_num_field('bytes allocated',
328
          [(wordsize(32), 227205560, 10),
329 330
           # previous:    196457520
           # 2012-10-08:  259547660 (x86/Linux, new codegen)
331
           # 2013-11-21:  198573456 (x86 Windows, 64 bit machine)
332
           # 2014-12-10:  227205560 constraint solver got worse again; more aggressive solving
333 334
           #                        of family-applications leads to less sharing, I think

335
           (wordsize(64), 403932600, 10)]),
336 337 338
             # Previously 530000000 (+/- 10%)
             # 17/1/13:   602993184  (x86_64/Linux)
             #            (new demand analyser)
339 340
             # 2013-06-08 538467496  (x86_64/Linux)
             # ^ reason unknown
eir@cis.upenn.edu's avatar
eir@cis.upenn.edu committed
341 342
             # 2013-08-02 454498592  (amd64/Linux)
             # decrease from more aggressive coercion optimisations from roles
343 344
             # 2013-11-12 397672152  (amd64/Linux)
             # big decrease following better CSE and arity
345 346
             # 2014-07-17 409314320  (amd64/Linux)
             # general round of updates
Joachim Breitner's avatar
Joachim Breitner committed
347
             # 2014-09-10 385152728  post-AMP-cleanup
348
             # 2014-12-08 340969128  constraint solver perf improvements (esp kick-out)
349
             # 2014-12-10 449042120  constraint solver got worse again; more aggressive solving
350
             #                          of family-applications leads to less sharing, I think
351
             # 2015-03-17 403932600  tweak to solver algorithm
352

353 354 355
       only_ways(['normal'])
      ],
     compile,
356
     ['-freduction-depth=300'])
357

Simon Peyton Jones's avatar
Simon Peyton Jones committed
358
test('T5631',
359
     [compiler_stats_num_field('bytes allocated',
360
          [(wordsize(32), 390199244, 10),
361
        # expected value: 392904228 (x86/Linux)
362
        # 2014-04-04:     346389856 (x86 Windows, 64 bit machine)
363
        # 2014-12-01:     390199244 (Windows laptop)
364
           (wordsize(64), 812288344, 5)]),
365
        # expected value: 774595008 (amd64/Linux):
366
        # expected value: 735486328 (amd64/Linux) 2012/12/12:
367
        # expected value: 690742040 (amd64/Linux) Call Arity improvements
368
        # 2014-09-09:     739704712 (amd64/Linux) AMP changes
369
        # 2014-11-04:     776121120 (amd64/Linux) new-flatten-skolems
370
        # 2015-06-01:     812288344 (amd64/Linux) unknown cause
Simon Peyton Jones's avatar
Simon Peyton Jones committed
371 372 373 374 375
       only_ways(['normal'])
      ],
     compile,
     [''])

376
test('parsing001',
377 378 379 380
     [compiler_stats_num_field('bytes allocated',
          [(wordsize(32), 274000576, 10),
           (wordsize(64), 587079016, 5)]),
        # expected value: 587079016 (amd64/Linux)
381 382 383 384 385
       only_ways(['normal']),
      ],
     compile_fail, [''])


386 387 388
test('T783',
     [ only_ways(['normal']),  # no optimisation for this one
      # expected value: 175,569,928 (x86/Linux)
389
      compiler_stats_num_field('bytes allocated',
390
          [(wordsize(32), 235002220, 5),
391
            # 2012-10-08: 226907420 (x86/Linux)
392 393
            # 2013-02-10: 329202116 (x86/Windows)
            # 2013-02-10: 338465200 (x86/OSX)
394
            # 2014-04-04: 319179104 (x86 Windows, 64 bit machine)
395 396
            # 2014-09-03: 223377364 (Windows) better specialisation, raft of core-to-core optimisations
            # 2014-12-22: 235002220 (Windows) not sure why
397

398
           (wordsize(64), 548288760, 10)]),
399 400 401 402 403 404
            # 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)
405 406
            # 18/10/2013: 734038080 (amd64/Linux)
            #   (fix for #8456)
407 408
            # 24/10/2013: 654804144 (amd64/Linux)
            #   (fix previous fix for #8456)
409 410
            # 2014-07-17: 640031840 (amd64/Linux)
            #   (general round of updates)
411 412
            # 2014-08-29: 441932632  (amd64/Linux)
            #   (better specialisation, raft of core-to-core optimisations)
413 414 415 416
            # 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.)
417 418
            # 2015-05-16: 548288760  (amd64/Linux)
	    #   (improved sequenceBlocks in nativeCodeGen, #10422)
419
      extra_hc_opts('-static')
420 421
      ],
      compile,[''])
422 423 424

test('T5321Fun',
     [ only_ways(['normal']),  # no optimisation for this one
425
       compiler_stats_num_field('bytes allocated',
426
           [(wordsize(32), 206406188, 10),
427 428 429
             # prev:       300000000
             # 2012-10-08: 344416344 x86/Linux
             #  (increase due to new codegen)
430
             # 2014-09-03: 299656164     (specialisation and inlining)
431
             # 10/12/2014: 206406188     #  Improvements in constraint solver
432
            (wordsize(64), 429921312, 10)])
433
             # prev:       585521080
434 435 436 437
             # 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
438
             # 10/09/2014: 601629032     #  post-AMP-cleanup
439
             # 06/11/2014: 541287000     #  Simon's flat-skol changes to the constraint solver
440
             # 10/12/2014: 408110888     #  Improvements in constraint solver
441
             # 16/12/2014: 429921312     #  Flattener parameterized over roles
442 443 444 445 446
      ],
      compile,[''])

test('T5321FD',
     [ only_ways(['normal']),  # no optimisation for this one
447
      compiler_stats_num_field('bytes allocated',
448
          [(wordsize(32), 211699816, 10),
449 450 451
            # prev:       213380256
            # 2012-10-08: 240302920 (x86/Linux)
            #  (increase due to new codegen)
452 453
            # 2014-07-31: 211699816 (Windows) (-11%)
            #  (due to better optCoercion, 5e7406d9, #9233)
454
           (wordsize(64), 410895536, 10)])
455 456 457
            # prev:       418306336
            # 29/08/2012: 492905640
            #  (increase due to new codegen)
458
            # 15/05/2013: 406039584
459
            #  (reason for decrease unknown)
460
            # 08/06/2013: 476497048
461
            #  (reason for increase unknown)
462 463 464 465
            # 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)
466 467
            # 2014-10-08  410895536
            #  (various changes; biggest improvements due to 949ad67 and FastString package ids)
468 469
      ],
      compile,[''])
Ian Lynagh's avatar
Ian Lynagh committed
470 471 472

test('T5642',
     [ only_ways(['normal']),
473
       compiler_stats_num_field('bytes allocated',
474
           [(wordsize(32), 641085256, 10),
475
                     # sample from x86/Linux
Gabor Greif's avatar
Typos  
Gabor Greif committed
476
            # prev:        650000000
477
            # 2014-09-03:  753045568 
478
            # 2014-12-10:  641085256 Improvements in constraints solver
479 480

            (wordsize(64), 1282916024, 10)])
481 482
            # prev:        1300000000
            # 2014-07-17:  1358833928 (general round of updates)
483
            # 2014-08-07:  1402242360 (caused by 1fc60ea)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
484
# Watch out for:
Joachim Breitner's avatar
Joachim Breitner committed
485 486 487 488 489
            # 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
490
            # 2014-12-10:  1282916024 Improvements in constraints solver
Ian Lynagh's avatar
Ian Lynagh committed
491 492
      ],
      compile,['-O'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
493 494 495

test('T5837',
     [ only_ways(['normal']),
496
      compiler_stats_num_field('bytes allocated',
497
          [(wordsize(32), 115905208, 10),
498
             # 40000000 (x86/Linux)
499 500
             # 2013-11-13:  45520936 (x86/Windows, 64bit machine)
             # 2014-09-03:  37096484 (Windows laptop, w/w for INLINABLE things
501
             # 2014-12-01: 135914136 (Windows laptop, regression see below)
502
             # 2014-12-08  115905208  Constraint solver perf improvements (esp kick-out)
503 504

           (wordsize(64), 38834096, 10)])
505
             # sample: 3926235424 (amd64/Linux, 15/2/2012)
506 507
             # 2012-10-02 81879216
             # 2012-09-20 87254264 amd64/Linux
508
             # 2013-09-18 90587232 amd64/Linux
Austin Seipp's avatar
Austin Seipp committed
509 510
             # 2013-11-21 86795752 amd64/Linux, GND via Coercible and counters
             #                                  for constraints solving
511 512
             # 2014-08-29 73639840 amd64/Linux, w/w for INLINABLE things
             # 2014-10-08 73639840 amd64/Linux, Burning Bridges and other small changes
513
             # 2014-11-06 271028976       Linux, Accept big regression;
514
             #   See Note [An alternative story for the inert substitution] in TcFlatten
515
             # 2014-12-08 234790312 Constraint solver perf improvements (esp kick-out)
516 517
             # 2014-12-16 231155640 Mac  Flattener parameterized over roles;
             #                           some optimization
518
             # 2015-03-17 53424304  Mac  Better depth checking; fails earlier
519
             # 2015-06-09 38834096  Better "improvement"; I'm not sure whey it improves things
Simon Peyton Jones's avatar
Simon Peyton Jones committed
520
      ],
521
      compile_fail,['-freduction-depth=50'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
522 523 524

test('T6048',
     [ only_ways(['optasm']),
525
      compiler_stats_num_field('bytes allocated',
526
          [(wordsize(32), 49987836, 10),
527 528
            # prev:       38000000 (x86/Linux)
            # 2012-10-08: 48887164 (x86/Linux)
529
            # 2014-04-04: 62618072 (x86 Windows, 64 bit machine)
530
            # 2014-09-03: 56315812 (x86 Windows, w/w for INLINEAVBLE)
531 532
            # 2014-12-01: 49987836 (x86 Windows)

533
           (wordsize(64),  95946688, 12)])
534
             # 18/09/2012  97247032 amd64/Linux
535
             # 16/01/2014 108578664 amd64/Linux (unknown, likely foldl-via-foldr)
536
             # 18/01/2014  95960720 amd64/Linux Call Arity improvements
Austin Seipp's avatar
Austin Seipp committed
537
             # 28/02/2014 105556793 amd64/Linux (unknown, tweak in base/4d9e7c9e3 resulted in change)
Joachim Breitner's avatar
Joachim Breitner committed
538
             # 05/03/2014 110646312 amd64/Linux Call Arity became more elaborate
539
             # 14/07/2014 125431448 amd64/Linux unknown reason. Even worse in GHC-7.8.3. *shurg*
540
             # 29/08/2014 108354472 amd64/Linux w/w for INLINABLE things
541
             # 14/09/2014  88186056 amd64/Linux BPP part1 change (more NoImplicitPreludes in base)
542
             # 08/01/2014  95946688 amd64/Linux Mostly 4c834fd. Occasional spikes to 103822120!
Simon Peyton Jones's avatar
Simon Peyton Jones committed
543 544
      ],
      compile,[''])
545 546 547 548

test('T9020',
     [ only_ways(['optasm']),
      compiler_stats_num_field('bytes allocated',
549 550 551
          [(wordsize(32), 343005716, 10),
           # Original:    381360728
           # 2014-07-31:  343005716 (Windows) (general round of updates)
David Feuer's avatar
David Feuer committed
552
           (wordsize(64), 680162056, 10)])
553 554
           # prev:        795469104
           # 2014-07-17:  728263536 (general round of updates)
Joachim Breitner's avatar
Joachim Breitner committed
555
           # 2014-09-10:  785871680 post-AMP-cleanup
David Feuer's avatar
David Feuer committed
556
           # 2014-11-03:  680162056 Further Applicative and Monad adjustments
557 558
      ],
      compile,[''])
559 560 561 562

test('T9675',
     [ only_ways(['optasm']),
       compiler_stats_num_field('max_bytes_used',
563
          [(wordsize(64), 22220552, 25),
564
          # 2014-10-13    29596552
565
          # 2014-10-13    26570896   seq the DmdEnv in seqDmdType as well
566
          # 2014-10-13    18582472   different machines giving different results..
567
          # 2014-10-13    22220552   use the mean
568
           (wordsize(32), 11220552, 25)
569 570
          ]),
       compiler_stats_num_field('peak_megabytes_allocated',
571
          [(wordsize(64), 44, 15),
572
          # 2014-10-13    66
573
          # 2014-10-13    58         seq the DmdEnv in seqDmdType as well
574
          # 2014-10-13    49         different machines giving different results...
575
          # 2014-10-13    53         use the mean
576
          # 2014-06-15    44         reduced for some reason
577
            (wordsize(32), 25, 15)
578 579
          ]),
       compiler_stats_num_field('bytes allocated',
580 581
          [(wordsize(64), 544489040, 10)
          # 2014-10-13    544489040
582
          ,(wordsize(32), 250000000, 10)
583 584 585 586
          ]),
      ],
     compile,
     [''])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
587 588 589 590

test('T9872a',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
591
          [(wordsize(64), 2680733672, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
592
          # 2014-12-10    5521332656    Initally created
593
          # 2014-12-16    5848657456    Flattener parameterized over roles
594
          # 2014-12-18    2680733672    Reduce type families even more eagerly
595
           (wordsize(32), 1325592896, 5)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
596 597 598 599 600 601 602 603
          ]),
      ],
     compile_fail,
     [''])

test('T9872b',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
604
          [(wordsize(64), 3480212048, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
605
          # 2014-12-10    6483306280    Initally created
606
          # 2014-12-16    6892251912    Flattener parameterized over roles
607
          # 2014-12-18    3480212048    Reduce type families even more eagerly
608
           (wordsize(32), 1700000000, 5)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
609 610 611 612
          ]),
      ],
     compile_fail,
     [''])
613 614 615
test('T9872c',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
616
          [(wordsize(64), 2963554096, 5),
617
          # 2014-12-10    5495850096    Initally created
618
          # 2014-12-16    5842024784    Flattener parameterized over roles
619
          # 2014-12-18    2963554096    Reduce type families even more eagerly
620
           (wordsize(32), 1500000000, 5)
621 622 623 624
          ]),
      ],
     compile_fail,
     [''])
625 626 627
test('T9872d',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
628
          [(wordsize(64), 726679784, 5),
629 630
          # 2014-12-18    796071864   Initally created
          # 2014-12-18    739189056   Reduce type families even more eagerly
631
          # 2015-01-07    687562440   TrieMap leaf compression
632
          # 2015-03-17    726679784   tweak to solver; probably flattens more
633
           (wordsize(32), 328810212, 5)
634 635 636 637
          ]),
      ],
     compile,
     [''])
638 639 640 641

test('T9961',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
642
          [(wordsize(64), 663978160, 5),
643
          # 2015-01-12    807117816   Initally created
644 645
          # 2015-spring   772510192   Got better
          # 2015-05-22    663978160   Fix for #10370 improves it more
646
           (wordsize(32), 375647160, 5)
647 648 649 650
          ]),
      ],
     compile,
     ['-O'])