all.T 31.5 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), 41, 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
             # 2015-06-03 41, (amd64/Linux) use +RTS -G1
50
      compiler_stats_num_field('max_bytes_used',
51
          [(platform('i386-unknown-mingw32'), 5719436, 20),
52 53
                                 # 2010-05-17 5717704 (x86/Windows)
                                 # 2013-02-10 5159748 (x86/Windows)
54
                                 # 2013-02-10 5030080 (x86/Windows)
55
                                 # 2013-11-13 7295012 (x86/Windows, 64bit machine)
56
                                 # 2014-04-24 5719436 (x86/Windows, 64bit machine)
57
           (wordsize(32), 5949188, 1),
58 59
             #            6707308 (x86/OS X)
             # 2009-12-31 6149572 (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
60
             # 2014-01-22 6429864 (x86/Linux)
61
             # 2014-06-29 5949188 (x86/Linux)
62
           (wordsize(64), 10000000, 15)]),
Joachim Breitner's avatar
Joachim Breitner committed
63
             # 2014-09-10 10463640, 10  # post-AMP-update (somewhat stabelish)
Austin Seipp's avatar
Austin Seipp committed
64
               # looks like the peak is around ~10M, but we're
65 66 67
               # 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
68
               # See Note [residency] to get an accurate view.
69 70
             # 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
71
      compiler_stats_num_field('bytes allocated',
72
          [(platform('i386-unknown-mingw32'), 301784492, 5),
73 74
                                 #            215582916 (x86/Windows)
                                 # 2012-10-29 298921816 (x86/Windows)
75
                                 # 2013-02-10 310633884 (x86/Windows)
76
                                 # 2013-11-13 317975916 (x86/Windows, 64bit machine)
77
                                 # 2014-04-04 301784492 (x86/Windows, 64bit machine)
78
           (wordsize(32), 303300692, 1),
79 80 81 82
             #            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
83
             # 2014-01-22 316103268 (x86/Linux)
84
             # 2014-06-29 303300692 (x86/Linux)
85
           (wordsize(64), 581460896, 5)]),
86 87 88 89 90 91 92
             # 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)
93
             # 29/08/2012 633334184 (amd64/Linux) new codegen
94
             # 18/09/2012 641959976 (amd64/Linux)
95 96 97 98 99
             # 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
100
             # 10/02/2014 660922376 (x86_64/Linux) call arity analysis
101
             # 17/07/2014 651626680 (x86_64/Linux) roundabout update
Joachim Breitner's avatar
Joachim Breitner committed
102
             # 10/09/2014 630299456 (x86_64/Linux) post-AMP-cleanup
103
             # 03/06/2015 581460896 (x86_64/Linux) use +RTS -G1
104
      only_ways(['normal']),
105

106
      extra_hc_opts('-dcore-lint -static'),
107 108
          # Leave -dcore-lint on for this one test, so that we have something
          # that will catch a regression in -dcore-lint performance.
109 110 111 112

      # Use `+RTS -G1` for more stable residency measurements. Note [residency].
      # Only 64-bit as we don't have a good 32-bit test environment at the moment
      when(wordsize(64), extra_hc_opts('+RTS -G1 -RTS'))
Simon Marlow's avatar
Simon Marlow committed
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
      ],
     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',
130
     [
Simon Marlow's avatar
Simon Marlow committed
131
      compiler_stats_num_field('max_bytes_used', # Note [residency]
132
          [(wordsize(32), 26525384, 15),
133 134 135 136
             #            17725476 (x86/OS X)
             #            14593500 (Windows)
             # 2013-02-10 20651576 (x86/Windows)
             # 2013-02-10 20772984 (x86/OSX)
137
             # 2013-11-13 24009436 (x86/Windows, 64bit machine)
138
             # 2014-04-24 19882188 (x86/Windows, 64bit machine)
139 140
             # 2014-12-22 26525384 (x86/Windows) Increase due to silent superclasses?

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

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

      # Use `+RTS -G1` for more stable residency measurements. Note [residency].
      # Only 64-bit as we don't have a good 32-bit test environment at the moment
      when(wordsize(64), extra_hc_opts('+RTS -G1 -RTS'))
Simon Marlow's avatar
Simon Marlow committed
180 181 182
      ],
     compile,
     [''])
Ian Lynagh's avatar
Ian Lynagh committed
183

Simon Peyton Jones's avatar
Simon Peyton Jones committed
184
test('T4801',
185 186
     [ # expect_broken(5224),
       # temporarily unbroken (#5227)
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204
###################################
# 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
205

206
      compiler_stats_num_field('bytes allocated',
207
          [(platform('x86_64-apple-darwin'), 434058304, 5),
208
                           # expected value: 510938976 (amd64/OS X):
Simon Marlow's avatar
Simon Marlow committed
209

210
           (wordsize(32), 203962148, 10),
Austin Seipp's avatar
Austin Seipp committed
211 212
           # prev:        185669232 (x86/OSX)
           # 2014-01-22:  211198056 (x86/Linux)
213
           # 2014-09-03:  185242032 (Windows laptop)
214
           # 2014-12-01:  203962148 (Windows laptop)
Joachim Breitner's avatar
Joachim Breitner committed
215
           (wordsize(64), 382056344, 10)]),
216 217 218
            # 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
219
            # 2014-04-08: 362939272 (amd64/Linux) cumulation of various smaller improvements over recent commits
Joachim Breitner's avatar
Joachim Breitner committed
220
            # 2014-10-08: 382056344 (amd64/Linux) stricter foldr2 488e95b
Simon Marlow's avatar
Simon Marlow committed
221

222
###################################
223
# deactivated for now, as this metric became too volatile recently
224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245
#
#     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)
246
       only_ways(['normal']),
247 248 249 250 251 252
       extra_hc_opts('-static'),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
       # Only 64-bit as we don't have a good 32-bit test environment at the moment
       when(wordsize(64), extra_hc_opts('+RTS -G1 -RTS'))
       ],
Simon Peyton Jones's avatar
Simon Peyton Jones committed
253 254 255
     compile,
     [''])

Ian Lynagh's avatar
Ian Lynagh committed
256
test('T3064',
257
     [compiler_stats_num_field('peak_megabytes_allocated',# Note [residency]
258
          [(wordsize(32), 16, 20),
259 260
            # expected value: 14 (x86/Linux 28-06-2012):
            # 2013-11-13:     18 (x86/Windows, 64bit machine)
Austin Seipp's avatar
Austin Seipp committed
261
            # 2014-01-22:     23 (x86/Linux)
262
            # 2014-12-22:     23 (x86/Linux) death to silent superclasses
263
           (wordsize(64), 54, 20)]),
264 265
            # (amd64/Linux):            18
            # (amd64/Linux) 2012-02-07: 26
266
            # (amd64/Linux) 2013-02-12: 23; increased range to 10%
267
            # (amd64/Linux) 2013-04-03: 26
Austin Seipp's avatar
Austin Seipp committed
268
            # (amd64/Linux) 2013-09-11: 30; result of AMP patch
269
            # Increased range to 20%.  peak-usage varies from 22 to 26,
270
            #  depending on whether the old .hi file exists
271
            # (amd64/Linux) 2013-09-11: 37; better arity analysis (weird)
272
            # (amd64/Linux) (09/09/2014): 42, AMP changes (larger interfaces, more loading)
273
            # (amd64/Linux) 2014-10-13: 38: Stricter seqDmdType
274
            # (amd64/Linux) 2014-12-22: 27: death to silent superclasses
275
            # (amd64/Linux) 2015-01-22: 32: Varies from 30 to 34, at least here.
276
            # (amd64/Linux) 2015-06-03: 54: use +RTS -G1
277

278
      compiler_stats_num_field('bytes allocated',
279
          [(wordsize(32), 122836340, 10),
280
            # 2011-06-28: 56380288  (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
281
            # 2012-10-30: 111189536 (x86/Windows)
282
            # 2013-11-13: 146626504 (x86/Windows, 64bit machine)
Austin Seipp's avatar
Austin Seipp committed
283
            # 2014-01-22: 162457940 (x86/Linux)
284
            # 2014-12-01: 162457940 (Windows)
285
            # 2014-12-22: 122836340 (Windows) Death to silent superclasses
286

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

305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328
###################################
# 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
329

330 331 332 333 334
       only_ways(['normal']),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
       # Only 64-bit as we don't have a good 32-bit test environment at the moment
       when(wordsize(64), extra_hc_opts('+RTS -G1 -RTS'))
Ian Lynagh's avatar
Ian Lynagh committed
335 336 337 338
      ],
     compile,
     [''])

Ian Lynagh's avatar
Ian Lynagh committed
339 340 341 342 343
test('T4007',
     normal,
     run_command,
     ['$MAKE -s --no-print-directory T4007'])

344
test('T5030',
345
     [compiler_stats_num_field('bytes allocated',
346
          [(wordsize(32), 227205560, 10),
347 348
           # previous:    196457520
           # 2012-10-08:  259547660 (x86/Linux, new codegen)
349
           # 2013-11-21:  198573456 (x86 Windows, 64 bit machine)
350
           # 2014-12-10:  227205560 constraint solver got worse again; more aggressive solving
351 352
           #                        of family-applications leads to less sharing, I think

353
           (wordsize(64), 403932600, 10)]),
354 355 356
             # Previously 530000000 (+/- 10%)
             # 17/1/13:   602993184  (x86_64/Linux)
             #            (new demand analyser)
357 358
             # 2013-06-08 538467496  (x86_64/Linux)
             # ^ reason unknown
eir@cis.upenn.edu's avatar
eir@cis.upenn.edu committed
359 360
             # 2013-08-02 454498592  (amd64/Linux)
             # decrease from more aggressive coercion optimisations from roles
361 362
             # 2013-11-12 397672152  (amd64/Linux)
             # big decrease following better CSE and arity
363 364
             # 2014-07-17 409314320  (amd64/Linux)
             # general round of updates
Joachim Breitner's avatar
Joachim Breitner committed
365
             # 2014-09-10 385152728  post-AMP-cleanup
366
             # 2014-12-08 340969128  constraint solver perf improvements (esp kick-out)
367
             # 2014-12-10 449042120  constraint solver got worse again; more aggressive solving
368
             #                          of family-applications leads to less sharing, I think
369
             # 2015-03-17 403932600  tweak to solver algorithm
370

371 372 373
       only_ways(['normal'])
      ],
     compile,
374
     ['-freduction-depth=300'])
375

Simon Peyton Jones's avatar
Simon Peyton Jones committed
376
test('T5631',
377
     [compiler_stats_num_field('bytes allocated',
378
          [(wordsize(32), 390199244, 10),
379
        # expected value: 392904228 (x86/Linux)
380
        # 2014-04-04:     346389856 (x86 Windows, 64 bit machine)
381
        # 2014-12-01:     390199244 (Windows laptop)
382
           (wordsize(64), 812288344, 5)]),
383
        # expected value: 774595008 (amd64/Linux):
384
        # expected value: 735486328 (amd64/Linux) 2012/12/12:
385
        # expected value: 690742040 (amd64/Linux) Call Arity improvements
386
        # 2014-09-09:     739704712 (amd64/Linux) AMP changes
387
        # 2014-11-04:     776121120 (amd64/Linux) new-flatten-skolems
388
        # 2015-06-01:     812288344 (amd64/Linux) unknown cause
Simon Peyton Jones's avatar
Simon Peyton Jones committed
389 390 391 392 393
       only_ways(['normal'])
      ],
     compile,
     [''])

394
test('parsing001',
395 396 397 398
     [compiler_stats_num_field('bytes allocated',
          [(wordsize(32), 274000576, 10),
           (wordsize(64), 587079016, 5)]),
        # expected value: 587079016 (amd64/Linux)
399 400 401 402 403
       only_ways(['normal']),
      ],
     compile_fail, [''])


404 405 406
test('T783',
     [ only_ways(['normal']),  # no optimisation for this one
      # expected value: 175,569,928 (x86/Linux)
407
      compiler_stats_num_field('bytes allocated',
408
          [(wordsize(32), 235002220, 5),
409
            # 2012-10-08: 226907420 (x86/Linux)
410 411
            # 2013-02-10: 329202116 (x86/Windows)
            # 2013-02-10: 338465200 (x86/OSX)
412
            # 2014-04-04: 319179104 (x86 Windows, 64 bit machine)
413 414
            # 2014-09-03: 223377364 (Windows) better specialisation, raft of core-to-core optimisations
            # 2014-12-22: 235002220 (Windows) not sure why
415

416
           (wordsize(64), 548288760, 10)]),
417 418 419 420 421 422
            # 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)
423 424
            # 18/10/2013: 734038080 (amd64/Linux)
            #   (fix for #8456)
425 426
            # 24/10/2013: 654804144 (amd64/Linux)
            #   (fix previous fix for #8456)
427 428
            # 2014-07-17: 640031840 (amd64/Linux)
            #   (general round of updates)
429 430
            # 2014-08-29: 441932632  (amd64/Linux)
            #   (better specialisation, raft of core-to-core optimisations)
431 432 433 434
            # 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.)
435 436
            # 2015-05-16: 548288760  (amd64/Linux)
	    #   (improved sequenceBlocks in nativeCodeGen, #10422)
437
      extra_hc_opts('-static')
438 439
      ],
      compile,[''])
440 441 442

test('T5321Fun',
     [ only_ways(['normal']),  # no optimisation for this one
443
       compiler_stats_num_field('bytes allocated',
444
           [(wordsize(32), 206406188, 10),
445 446 447
             # prev:       300000000
             # 2012-10-08: 344416344 x86/Linux
             #  (increase due to new codegen)
448
             # 2014-09-03: 299656164     (specialisation and inlining)
449
             # 10/12/2014: 206406188     #  Improvements in constraint solver
450
            (wordsize(64), 429921312, 10)])
451
             # prev:       585521080
452 453 454 455
             # 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
456
             # 10/09/2014: 601629032     #  post-AMP-cleanup
457
             # 06/11/2014: 541287000     #  Simon's flat-skol changes to the constraint solver
458
             # 10/12/2014: 408110888     #  Improvements in constraint solver
459
             # 16/12/2014: 429921312     #  Flattener parameterized over roles
460 461 462 463 464
      ],
      compile,[''])

test('T5321FD',
     [ only_ways(['normal']),  # no optimisation for this one
465
      compiler_stats_num_field('bytes allocated',
466
          [(wordsize(32), 211699816, 10),
467 468 469
            # prev:       213380256
            # 2012-10-08: 240302920 (x86/Linux)
            #  (increase due to new codegen)
470 471
            # 2014-07-31: 211699816 (Windows) (-11%)
            #  (due to better optCoercion, 5e7406d9, #9233)
472
           (wordsize(64), 410895536, 10)])
473 474 475
            # prev:       418306336
            # 29/08/2012: 492905640
            #  (increase due to new codegen)
476
            # 15/05/2013: 406039584
477
            #  (reason for decrease unknown)
478
            # 08/06/2013: 476497048
479
            #  (reason for increase unknown)
480 481 482 483
            # 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)
484 485
            # 2014-10-08  410895536
            #  (various changes; biggest improvements due to 949ad67 and FastString package ids)
486 487
      ],
      compile,[''])
Ian Lynagh's avatar
Ian Lynagh committed
488 489 490

test('T5642',
     [ only_ways(['normal']),
491
       compiler_stats_num_field('bytes allocated',
492
           [(wordsize(32), 641085256, 10),
493
                     # sample from x86/Linux
Gabor Greif's avatar
Typos  
Gabor Greif committed
494
            # prev:        650000000
495
            # 2014-09-03:  753045568 
496
            # 2014-12-10:  641085256 Improvements in constraints solver
497 498

            (wordsize(64), 1282916024, 10)])
499 500
            # prev:        1300000000
            # 2014-07-17:  1358833928 (general round of updates)
501
            # 2014-08-07:  1402242360 (caused by 1fc60ea)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
502
# Watch out for:
Joachim Breitner's avatar
Joachim Breitner committed
503 504 505 506 507
            # 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
508
            # 2014-12-10:  1282916024 Improvements in constraints solver
Ian Lynagh's avatar
Ian Lynagh committed
509 510
      ],
      compile,['-O'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
511 512 513

test('T5837',
     [ only_ways(['normal']),
514
      compiler_stats_num_field('bytes allocated',
515
          [(wordsize(32), 115905208, 10),
516
             # 40000000 (x86/Linux)
517 518
             # 2013-11-13:  45520936 (x86/Windows, 64bit machine)
             # 2014-09-03:  37096484 (Windows laptop, w/w for INLINABLE things
519
             # 2014-12-01: 135914136 (Windows laptop, regression see below)
520
             # 2014-12-08  115905208  Constraint solver perf improvements (esp kick-out)
521 522

           (wordsize(64), 38834096, 10)])
523
             # sample: 3926235424 (amd64/Linux, 15/2/2012)
524 525
             # 2012-10-02 81879216
             # 2012-09-20 87254264 amd64/Linux
526
             # 2013-09-18 90587232 amd64/Linux
Austin Seipp's avatar
Austin Seipp committed
527 528
             # 2013-11-21 86795752 amd64/Linux, GND via Coercible and counters
             #                                  for constraints solving
529 530
             # 2014-08-29 73639840 amd64/Linux, w/w for INLINABLE things
             # 2014-10-08 73639840 amd64/Linux, Burning Bridges and other small changes
531
             # 2014-11-06 271028976       Linux, Accept big regression;
532
             #   See Note [An alternative story for the inert substitution] in TcFlatten
533
             # 2014-12-08 234790312 Constraint solver perf improvements (esp kick-out)
534 535
             # 2014-12-16 231155640 Mac  Flattener parameterized over roles;
             #                           some optimization
536
             # 2015-03-17 53424304  Mac  Better depth checking; fails earlier
537
             # 2015-06-09 38834096  Better "improvement"; I'm not sure whey it improves things
Simon Peyton Jones's avatar
Simon Peyton Jones committed
538
      ],
539
      compile_fail,['-freduction-depth=50'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
540 541 542

test('T6048',
     [ only_ways(['optasm']),
543
      compiler_stats_num_field('bytes allocated',
544
          [(wordsize(32), 49987836, 10),
545 546
            # prev:       38000000 (x86/Linux)
            # 2012-10-08: 48887164 (x86/Linux)
547
            # 2014-04-04: 62618072 (x86 Windows, 64 bit machine)
548
            # 2014-09-03: 56315812 (x86 Windows, w/w for INLINEAVBLE)
549 550
            # 2014-12-01: 49987836 (x86 Windows)

551
           (wordsize(64),  95946688, 12)])
552
             # 18/09/2012  97247032 amd64/Linux
553
             # 16/01/2014 108578664 amd64/Linux (unknown, likely foldl-via-foldr)
554
             # 18/01/2014  95960720 amd64/Linux Call Arity improvements
Austin Seipp's avatar
Austin Seipp committed
555
             # 28/02/2014 105556793 amd64/Linux (unknown, tweak in base/4d9e7c9e3 resulted in change)
Joachim Breitner's avatar
Joachim Breitner committed
556
             # 05/03/2014 110646312 amd64/Linux Call Arity became more elaborate
557
             # 14/07/2014 125431448 amd64/Linux unknown reason. Even worse in GHC-7.8.3. *shurg*
558
             # 29/08/2014 108354472 amd64/Linux w/w for INLINABLE things
559
             # 14/09/2014  88186056 amd64/Linux BPP part1 change (more NoImplicitPreludes in base)
560
             # 08/01/2014  95946688 amd64/Linux Mostly 4c834fd. Occasional spikes to 103822120!
Simon Peyton Jones's avatar
Simon Peyton Jones committed
561 562
      ],
      compile,[''])
563 564 565 566

test('T9020',
     [ only_ways(['optasm']),
      compiler_stats_num_field('bytes allocated',
567 568 569
          [(wordsize(32), 343005716, 10),
           # Original:    381360728
           # 2014-07-31:  343005716 (Windows) (general round of updates)
David Feuer's avatar
David Feuer committed
570
           (wordsize(64), 680162056, 10)])
571 572
           # prev:        795469104
           # 2014-07-17:  728263536 (general round of updates)
Joachim Breitner's avatar
Joachim Breitner committed
573
           # 2014-09-10:  785871680 post-AMP-cleanup
David Feuer's avatar
David Feuer committed
574
           # 2014-11-03:  680162056 Further Applicative and Monad adjustments
575 576
      ],
      compile,[''])
577 578 579

test('T9675',
     [ only_ways(['optasm']),
580 581
       compiler_stats_num_field('max_bytes_used', # Note [residency]
          [(wordsize(64), 28056344, 15),
582
          # 2014-10-13    29596552
583
          # 2014-10-13    26570896   seq the DmdEnv in seqDmdType as well
584
          # 2014-10-13    18582472   different machines giving different results..
585
          # 2014-10-13    22220552   use the mean
586 587
          # 2015-06-21    28056344   switch to `+RTS -G1`, tighten bound to 15%
           (wordsize(32), 11220552, 15)
588
          ]),
589 590
       compiler_stats_num_field('peak_megabytes_allocated', # Note [residency]
          [(wordsize(64), 105, 15),
591
          # 2014-10-13    66
592
          # 2014-10-13    58         seq the DmdEnv in seqDmdType as well
593
          # 2014-10-13    49         different machines giving different results...
594
          # 2014-10-13    53         use the mean
595 596
          # 2015-06-15    44         reduced for some reason
          # 2015-06-21    105        switch to `+RTS -G1`
597
            (wordsize(32), 25, 15)
598 599
          ]),
       compiler_stats_num_field('bytes allocated',
600 601
          [(wordsize(64), 544489040, 10)
          # 2014-10-13    544489040
602
          ,(wordsize(32), 250000000, 10)
603
          ]),
604 605 606 607

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
       # Only 64-bit as we don't have a good 32-bit test environment at the moment
       when(wordsize(64), extra_hc_opts('+RTS -G1 -RTS'))
608 609 610
      ],
     compile,
     [''])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
611 612 613 614

test('T9872a',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
615
          [(wordsize(64), 2680733672, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
616
          # 2014-12-10    5521332656    Initally created
617
          # 2014-12-16    5848657456    Flattener parameterized over roles
618
          # 2014-12-18    2680733672    Reduce type families even more eagerly
619
           (wordsize(32), 1325592896, 5)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
620 621 622 623 624 625 626 627
          ]),
      ],
     compile_fail,
     [''])

test('T9872b',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
628
          [(wordsize(64), 3480212048, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
629
          # 2014-12-10    6483306280    Initally created
630
          # 2014-12-16    6892251912    Flattener parameterized over roles
631
          # 2014-12-18    3480212048    Reduce type families even more eagerly
632
           (wordsize(32), 1700000000, 5)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
633 634 635 636
          ]),
      ],
     compile_fail,
     [''])
637 638 639
test('T9872c',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
640
          [(wordsize(64), 2963554096, 5),
641
          # 2014-12-10    5495850096    Initally created
642
          # 2014-12-16    5842024784    Flattener parameterized over roles
643
          # 2014-12-18    2963554096    Reduce type families even more eagerly
644
           (wordsize(32), 1500000000, 5)
645 646 647 648
          ]),
      ],
     compile_fail,
     [''])
649 650 651
test('T9872d',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
652
          [(wordsize(64), 726679784, 5),
653 654
          # 2014-12-18    796071864   Initally created
          # 2014-12-18    739189056   Reduce type families even more eagerly
655
          # 2015-01-07    687562440   TrieMap leaf compression
656
          # 2015-03-17    726679784   tweak to solver; probably flattens more
657
           (wordsize(32), 328810212, 5)
658 659 660 661
          ]),
      ],
     compile,
     [''])
662 663 664 665

test('T9961',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
666
          [(wordsize(64), 663978160, 5),
667
          # 2015-01-12    807117816   Initally created
668 669
          # 2015-spring   772510192   Got better
          # 2015-05-22    663978160   Fix for #10370 improves it more
670
           (wordsize(32), 375647160, 5)
671 672 673 674
          ]),
      ],
     compile,
     ['-O'])