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

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

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

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

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

      # Use `+RTS -G1` for more stable residency measurements. Note [residency].
182
      extra_hc_opts('+RTS -G1 -RTS')
Simon Marlow's avatar
Simon Marlow committed
183 184 185
      ],
     compile,
     [''])
Ian Lynagh's avatar
Ian Lynagh committed
186

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

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

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

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

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
253
       extra_hc_opts('+RTS -G1 -RTS')
254
       ],
Simon Peyton Jones's avatar
Simon Peyton Jones committed
255 256 257
     compile,
     [''])

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

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

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

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

333 334 335
       only_ways(['normal']),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
336
       extra_hc_opts('+RTS -G1 -RTS')
Ian Lynagh's avatar
Ian Lynagh committed
337 338 339 340
      ],
     compile,
     [''])

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

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

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

374 375 376
       only_ways(['normal'])
      ],
     compile,
377
     ['-freduction-depth=300'])
378

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

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


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

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

test('T5321Fun',
     [ only_ways(['normal']),  # no optimisation for this one
448
       compiler_stats_num_field('bytes allocated',
449
           [(wordsize(32), 206406188, 10),
450 451 452
             # prev:       300000000
             # 2012-10-08: 344416344 x86/Linux
             #  (increase due to new codegen)
453
             # 2014-09-03: 299656164     (specialisation and inlining)
454
             # 10/12/2014: 206406188     #  Improvements in constraint solver
455
            (wordsize(64), 509921312, 10)])
456
             # prev:       585521080
457 458 459 460
             # 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
461
             # 10/09/2014: 601629032     #  post-AMP-cleanup
462
             # 06/11/2014: 541287000     #  Simon's flat-skol changes to the constraint solver
463
             # 10/12/2014: 408110888     #  Improvements in constraint solver
464
             # 16/12/2014: 429921312     #  Flattener parameterized over roles
465 466 467
             # 10/08/2015: 509921312
             #  (undefined now takes an implicit parameter and GHC -O0 does
             #  not recognize that the application is bottom)
468 469 470 471 472
      ],
      compile,[''])

test('T5321FD',
     [ only_ways(['normal']),  # no optimisation for this one
473
      compiler_stats_num_field('bytes allocated',
474
          [(wordsize(32), 211699816, 10),
475 476 477
            # prev:       213380256
            # 2012-10-08: 240302920 (x86/Linux)
            #  (increase due to new codegen)
478 479
            # 2014-07-31: 211699816 (Windows) (-11%)
            #  (due to better optCoercion, 5e7406d9, #9233)
480
           (wordsize(64), 470895536, 10)])
481 482 483
            # prev:       418306336
            # 29/08/2012: 492905640
            #  (increase due to new codegen)
484
            # 15/05/2013: 406039584
485
            #  (reason for decrease unknown)
486
            # 08/06/2013: 476497048
487
            #  (reason for increase unknown)
488 489 490 491
            # 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)
492 493
            # 2014-10-08  410895536
            #  (various changes; biggest improvements due to 949ad67 and FastString package ids)
494 495 496
            # 2015-08-10: 470895536
            #  (undefined now takes an implicit parameter and GHC -O0 does
            #  not recognize that the application is bottom)
497 498
      ],
      compile,[''])
Ian Lynagh's avatar
Ian Lynagh committed
499 500 501

test('T5642',
     [ only_ways(['normal']),
502
       compiler_stats_num_field('bytes allocated',
503
           [(wordsize(32), 641085256, 10),
504
                     # sample from x86/Linux
Gabor Greif's avatar
Typos  
Gabor Greif committed
505
            # prev:        650000000
506
            # 2014-09-03:  753045568
507
            # 2014-12-10:  641085256 Improvements in constraints solver
508 509

            (wordsize(64), 1282916024, 10)])
510 511
            # prev:        1300000000
            # 2014-07-17:  1358833928 (general round of updates)
512
            # 2014-08-07:  1402242360 (caused by 1fc60ea)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
513
# Watch out for:
Joachim Breitner's avatar
Joachim Breitner committed
514 515 516 517 518
            # 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
519
            # 2014-12-10:  1282916024 Improvements in constraints solver
Ian Lynagh's avatar
Ian Lynagh committed
520 521
      ],
      compile,['-O'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
522 523 524

test('T5837',
     [ only_ways(['normal']),
525
      compiler_stats_num_field('bytes allocated',
526
          [(wordsize(32), 115905208, 10),
527
             # 40000000 (x86/Linux)
528 529
             # 2013-11-13:  45520936 (x86/Windows, 64bit machine)
             # 2014-09-03:  37096484 (Windows laptop, w/w for INLINABLE things
530
             # 2014-12-01: 135914136 (Windows laptop, regression see below)
531
             # 2014-12-08  115905208  Constraint solver perf improvements (esp kick-out)
532 533

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

test('T6048',
     [ only_ways(['optasm']),
554
      compiler_stats_num_field('bytes allocated',
555
          [(wordsize(32), 49987836, 10),
556 557
            # prev:       38000000 (x86/Linux)
            # 2012-10-08: 48887164 (x86/Linux)
558
            # 2014-04-04: 62618072 (x86 Windows, 64 bit machine)
559
            # 2014-09-03: 56315812 (x86 Windows, w/w for INLINEAVBLE)
560 561
            # 2014-12-01: 49987836 (x86 Windows)

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

test('T9020',
     [ only_ways(['optasm']),
      compiler_stats_num_field('bytes allocated',
578 579 580
          [(wordsize(32), 343005716, 10),
           # Original:    381360728
           # 2014-07-31:  343005716 (Windows) (general round of updates)
David Feuer's avatar
David Feuer committed
581
           (wordsize(64), 680162056, 10)])
582 583
           # prev:        795469104
           # 2014-07-17:  728263536 (general round of updates)
Joachim Breitner's avatar
Joachim Breitner committed
584
           # 2014-09-10:  785871680 post-AMP-cleanup
David Feuer's avatar
David Feuer committed
585
           # 2014-11-03:  680162056 Further Applicative and Monad adjustments
586 587
      ],
      compile,[''])
588 589 590

test('T9675',
     [ only_ways(['optasm']),
591 592
       compiler_stats_num_field('max_bytes_used', # Note [residency]
          [(wordsize(64), 28056344, 15),
593
          # 2014-10-13    29596552
594
          # 2014-10-13    26570896   seq the DmdEnv in seqDmdType as well
595
          # 2014-10-13    18582472   different machines giving different results..
596
          # 2014-10-13    22220552   use the mean
597
          # 2015-06-21    28056344   switch to `+RTS -G1`, tighten bound to 15%
598 599
           (wordsize(32), 15341228, 15)
 	  # 2015-07-11    15341228   (x86/Linux, 64-bit machine) use +RTS -G1
600
          ]),
601 602
       compiler_stats_num_field('peak_megabytes_allocated', # Note [residency]
          [(wordsize(64), 105, 15),
603
          # 2014-10-13    66
604
          # 2014-10-13    58         seq the DmdEnv in seqDmdType as well
605
          # 2014-10-13    49         different machines giving different results...
606
          # 2014-10-13    53         use the mean
607 608
          # 2015-06-15    44         reduced for some reason
          # 2015-06-21    105        switch to `+RTS -G1`
609 610
            (wordsize(32), 56, 15)
 	  # 2015-07-11    56         (x86/Linux, 64-bit machine) use +RTS -G1
611 612
          ]),
       compiler_stats_num_field('bytes allocated',
613 614
          [(wordsize(64), 544489040, 10)
          # 2014-10-13    544489040
615 616
          ,(wordsize(32), 279480696, 10)
 	  # 2015-07-11    279480696  (x86/Linux, 64-bit machine) use +RTS -G1
617
          ]),
618 619

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
620
       extra_hc_opts('+RTS -G1 -RTS')
621 622 623
      ],
     compile,
     [''])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
624 625 626 627

test('T9872a',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
628
          [(wordsize(64), 2680733672, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
629
          # 2014-12-10    5521332656    Initally created
630
          # 2014-12-16    5848657456    Flattener parameterized over roles
631
          # 2014-12-18    2680733672    Reduce type families even more eagerly
632
           (wordsize(32), 1325592896, 5)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
633 634 635 636 637 638 639 640
          ]),
      ],
     compile_fail,
     [''])

test('T9872b',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
641
          [(wordsize(64), 3480212048, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
642
          # 2014-12-10    6483306280    Initally created
643
          # 2014-12-16    6892251912    Flattener parameterized over roles
644
          # 2014-12-18    3480212048    Reduce type families even more eagerly
645
           (wordsize(32), 1700000000, 5)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
646 647 648 649
          ]),
      ],
     compile_fail,
     [''])
650 651 652
test('T9872c',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
653
          [(wordsize(64), 2963554096, 5),
654
          # 2014-12-10    5495850096    Initally created
655
          # 2014-12-16    5842024784    Flattener parameterized over roles
656
          # 2014-12-18    2963554096    Reduce type families even more eagerly
657
           (wordsize(32), 1500000000, 5)
658 659 660 661
          ]),
      ],
     compile_fail,
     [''])
662 663 664
test('T9872d',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
665
          [(wordsize(64), 726679784, 5),
666 667
          # 2014-12-18    796071864   Initally created
          # 2014-12-18    739189056   Reduce type families even more eagerly
668
          # 2015-01-07    687562440   TrieMap leaf compression
669
          # 2015-03-17    726679784   tweak to solver; probably flattens more
Ben Gamari's avatar
Ben Gamari committed
670 671 672
           (wordsize(32), 350369584, 5)
          # some date     328810212
          # 2015-07-11    350369584
673 674 675 676
          ]),
      ],
     compile,
     [''])
677 678 679 680

test('T9961',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
681
          [(wordsize(64), 663978160, 5),
682
          # 2015-01-12    807117816   Initally created
683 684
          # 2015-spring   772510192   Got better
          # 2015-05-22    663978160   Fix for #10370 improves it more
685
           (wordsize(32), 375647160, 5)
686 687 688 689
          ]),
      ],
     compile,
     ['-O'])
690 691 692 693 694 695 696 697 698 699 700 701

test('T9233',
    [ only_ways(['normal']),
      compiler_stats_num_field('bytes allocated',
        [(wordsize(64), 999826288, 5),
	         # 999826288   4 Aug 2015   initial value
	 (wordsize(32), 1, 5)   # Put in your value here if you hit this
	]),
      extra_clean(['T9233a.hi', 'T9233a.o'])
    ],
    multimod_compile,
    ['T9233', '-v0 -O2 -fno-spec-constr'])