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

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

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

148
           (wordsize(64), 50367248, 20)]),
149 150 151 152 153 154 155 156 157
             # 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)
158 159
             # 2014-07-14:     36670800  (amd64/Linux)
             #  (reason unknown, setting expected value somewhere in between)
160 161
             # 2015-01-22:     45000000  (amd64/Linux)
             #  varies between 40959592 and 52914488... increasing to +-20%
162 163
             # 2015-10-28:     50367248  (amd64/Linux)
             #  D757: emit Typeable instances at site of type definition
164

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

      # Use `+RTS -G1` for more stable residency measurements. Note [residency].
187
      extra_hc_opts('+RTS -G1 -RTS')
Simon Marlow's avatar
Simon Marlow committed
188 189 190
      ],
     compile,
     [''])
Ian Lynagh's avatar
Ian Lynagh committed
191

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

214
      compiler_stats_num_field('bytes allocated',
215 216 217
          [(platform('x86_64-apple-darwin'), 465653312, 10),
           # prev:       510938976 (amd64/OS X):
           # 2015-12-11: 465653312 (amd64/OS X) Update, bump tolerance to +/-10%
Simon Marlow's avatar
Simon Marlow committed
218

219
           (wordsize(32), 203962148, 10),
Austin Seipp's avatar
Austin Seipp committed
220 221
           # prev:        185669232 (x86/OSX)
           # 2014-01-22:  211198056 (x86/Linux)
222
           # 2014-09-03:  185242032 (Windows laptop)
223
           # 2014-12-01:  203962148 (Windows laptop)
224
           (wordsize(64), 434278248, 10)]),
225 226 227
            # 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
228
            # 2014-04-08: 362939272 (amd64/Linux) cumulation of various smaller improvements over recent commits
Joachim Breitner's avatar
Joachim Breitner committed
229
            # 2014-10-08: 382056344 (amd64/Linux) stricter foldr2 488e95b
230
            # 2015-10-28: 434278248 (amd64/Linux) emit Typeable at definition site
Simon Marlow's avatar
Simon Marlow committed
231

232
###################################
233
# deactivated for now, as this metric became too volatile recently
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
#
#     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)
256
       only_ways(['normal']),
257 258 259
       extra_hc_opts('-static'),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
260
       extra_hc_opts('+RTS -G1 -RTS')
261
       ],
Simon Peyton Jones's avatar
Simon Peyton Jones committed
262 263 264
     compile,
     [''])

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

288
      compiler_stats_num_field('bytes allocated',
289
          [(wordsize(32), 122836340, 10),
290
            # 2011-06-28: 56380288  (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
291
            # 2012-10-30: 111189536 (x86/Windows)
292
            # 2013-11-13: 146626504 (x86/Windows, 64bit machine)
Austin Seipp's avatar
Austin Seipp committed
293
            # 2014-01-22: 162457940 (x86/Linux)
294
            # 2014-12-01: 162457940 (Windows)
295
            # 2014-12-22: 122836340 (Windows) Death to silent superclasses
296

297
           (wordsize(64), 304344936, 5)]),
298 299
            # (amd64/Linux) (28/06/2011):  73259544
            # (amd64/Linux) (07/02/2013): 224798696
eir@cis.upenn.edu's avatar
eir@cis.upenn.edu committed
300
            # (amd64/Linux) (02/08/2013): 236404384, increase from roles
Austin Seipp's avatar
Austin Seipp committed
301
            # (amd64/Linux) (11/09/2013): 290165632, increase from AMP warnings
302
            # (amd64/Linux) (22/11/2013): 308300448, GND via Coercible and counters for constraints solving
303
            # (amd64/Linux) (02/12/2013): 329795912, Coercible refactor
304
            # (amd64/Linux) (11/02/2014): 308422280, optimize Coercions in simpleOptExpr
305
            # (amd64/Linux) (23/05/2014): 324022680, unknown cause
306
            # (amd64/Linux) (2014-07-17): 332702112, general round of updates
307
            # (amd64/Linux) (2014-08-29): 313638592, w/w for INLINABLE things
308
            # (amd64/Linux) (09/09/2014): 407416464, AMP changes (larger interfaces, more loading)
309
            # (amd64/Linux) (14/09/2014): 385145080, BPP changes (more NoImplicitPrelude in base)
310
            # (amd64/Linux) (10/12/2014): 363103840, improvements in constraint solver
311
            # (Mac)         (18/12/2014): 350418600, improvements to flattener
312 313
            # (amd64/Linux) (22/12/2014): 243670824, Ha! Death to superclass constraints, makes
            #                                        much less code for Monad instances
314 315
            # (amd64/Linux) (01/12/2015): 264952256, Regression due to Simon's wildcard refactor
            #                                        Tracked as #11151.
316 317
	    # (amd64/Linux) (11/12/2015): 304344936, Regression due to TypeInType
	    #                                        Tracked as #11196
318

319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342
###################################
# 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
343

344 345 346
       only_ways(['normal']),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
347
       extra_hc_opts('+RTS -G1 -RTS')
Ian Lynagh's avatar
Ian Lynagh committed
348 349 350 351
      ],
     compile,
     [''])

Ian Lynagh's avatar
Ian Lynagh committed
352 353 354 355 356
test('T4007',
     normal,
     run_command,
     ['$MAKE -s --no-print-directory T4007'])

357
test('T5030',
358
     [compiler_stats_num_field('bytes allocated',
359
          [(wordsize(32), 201882912, 10),
360 361
           # previous:    196457520
           # 2012-10-08:  259547660 (x86/Linux, new codegen)
362
           # 2013-11-21:  198573456 (x86 Windows, 64 bit machine)
363
           # 2014-12-10:  227205560 constraint solver got worse again; more aggressive solving
364
           #                        of family-applications leads to less sharing, I think
365
           # 2015-07-11:  201882912 reason unknown
366

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

386 387 388
       only_ways(['normal'])
      ],
     compile,
389
     ['-freduction-depth=300'])
390

Simon Peyton Jones's avatar
Simon Peyton Jones committed
391
test('T5631',
392
     [compiler_stats_num_field('bytes allocated',
393
          [(wordsize(32), 390199244, 10),
394
        # expected value: 392904228 (x86/Linux)
395
        # 2014-04-04:     346389856 (x86 Windows, 64 bit machine)
396
        # 2014-12-01:     390199244 (Windows laptop)
397
           (wordsize(64), 1124068664, 5)]),
398
        # expected value: 774595008 (amd64/Linux):
399
        # expected value: 735486328 (amd64/Linux) 2012/12/12:
400
        # expected value: 690742040 (amd64/Linux) Call Arity improvements
401
        # 2014-09-09:     739704712 (amd64/Linux) AMP changes
402
        # 2014-11-04:     776121120 (amd64/Linux) new-flatten-skolems
403
        # 2015-06-01:     812288344 (amd64/Linux) unknown cause
404
	# 2015-12-11:     1128828928 (amd64/Linux) TypeInType (see #11196)
eir@cis.upenn.edu's avatar
eir@cis.upenn.edu committed
405
	# 2015-12-21:     1198327544 (Mac) TypeApplications (will fix with #11196)
406
	# 2015-03-18:     1124068664 (Mac) optimize Unify & zonking
Simon Peyton Jones's avatar
Simon Peyton Jones committed
407 408 409 410 411
       only_ways(['normal'])
      ],
     compile,
     [''])

412
test('parsing001',
413 414 415 416
     [compiler_stats_num_field('bytes allocated',
          [(wordsize(32), 274000576, 10),
           (wordsize(64), 587079016, 5)]),
        # expected value: 587079016 (amd64/Linux)
417 418 419 420 421
       only_ways(['normal']),
      ],
     compile_fail, [''])


422 423 424
test('T783',
     [ only_ways(['normal']),  # no optimisation for this one
      # expected value: 175,569,928 (x86/Linux)
425
      compiler_stats_num_field('bytes allocated',
426
          [(wordsize(32), 235002220, 5),
427
            # 2012-10-08: 226907420 (x86/Linux)
428 429
            # 2013-02-10: 329202116 (x86/Windows)
            # 2013-02-10: 338465200 (x86/OSX)
430
            # 2014-04-04: 319179104 (x86 Windows, 64 bit machine)
431 432
            # 2014-09-03: 223377364 (Windows) better specialisation, raft of core-to-core optimisations
            # 2014-12-22: 235002220 (Windows) not sure why
433

434
           (wordsize(64), 488592288, 10)]),
435 436 437 438 439 440
            # 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)
441 442
            # 18/10/2013: 734038080 (amd64/Linux)
            #   (fix for #8456)
443 444
            # 24/10/2013: 654804144 (amd64/Linux)
            #   (fix previous fix for #8456)
445 446
            # 2014-07-17: 640031840 (amd64/Linux)
            #   (general round of updates)
447
            # 2014-08-29: 441932632 (amd64/Linux)
448
            #   (better specialisation, raft of core-to-core optimisations)
449 450 451 452 453 454 455 456 457 458
            # 2014-08-29: 719814352 (amd64/Linux)
            #   (changed order of cmm block causes analyses to allocate much more,
            #      but the changed order is slighly better in terms of runtime, and
            #      this test seems to be an extreme outlier.)
            # 2015-05-16: 548288760 (amd64/Linux)
            #   (improved sequenceBlocks in nativeCodeGen, #10422)
            # 2015-08-07: 470738808 (amd64/Linux)
            #   (simplifying the switch plan code path for simple checks, #10677)
            # 2015-08-28: 526230456 (amd64/Linux)
            #    (D757: Emit Typeable instances at site of type definition)
Ben Gamari's avatar
Ben Gamari committed
459 460
            # 2015-12-04: 1134085384 (amd64/Linux)
            #    (D1535: Major overhaul of pattern match checker, #11162)
461 462
            # 2016-02-03: 488592288 (amd64/Linux)
            #    (D1795: Another overhaul of pattern match checker, #11374)
463
      extra_hc_opts('-static')
464 465
      ],
      compile,[''])
466 467 468

test('T5321Fun',
     [ only_ways(['normal']),  # no optimisation for this one
469
       compiler_stats_num_field('bytes allocated',
470
           [(wordsize(32), 206406188, 10),
471 472 473
             # prev:       300000000
             # 2012-10-08: 344416344 x86/Linux
             #  (increase due to new codegen)
474
             # 2014-09-03: 299656164     (specialisation and inlining)
475
             # 10/12/2014: 206406188     #  Improvements in constraint solver
476
            (wordsize(64), 565883176, 10)])
477
             # prev:       585521080
478 479 480 481
             # 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
482
             # 10/09/2014: 601629032     #  post-AMP-cleanup
483
             # 06/11/2014: 541287000     #  Simon's flat-skol changes to the constraint solver
484
             # 10/12/2014: 408110888     #  Improvements in constraint solver
485
             # 16/12/2014: 429921312     #  Flattener parameterized over roles
486 487 488
             # 10/08/2015: 509921312
             #  (undefined now takes an implicit parameter and GHC -O0 does
             #  not recognize that the application is bottom)
489
	     # 11/12/2015: 565883176     #  TypeInType (see #11196)
490 491 492 493 494
      ],
      compile,[''])

test('T5321FD',
     [ only_ways(['normal']),  # no optimisation for this one
495
      compiler_stats_num_field('bytes allocated',
496
          [(wordsize(32), 211699816, 10),
497 498 499
            # prev:       213380256
            # 2012-10-08: 240302920 (x86/Linux)
            #  (increase due to new codegen)
500 501
            # 2014-07-31: 211699816 (Windows) (-11%)
            #  (due to better optCoercion, 5e7406d9, #9233)
502
           (wordsize(64), 532365376, 10)])
503 504 505
            # prev:       418306336
            # 29/08/2012: 492905640
            #  (increase due to new codegen)
506
            # 15/05/2013: 406039584
507
            #  (reason for decrease unknown)
508
            # 08/06/2013: 476497048
509
            #  (reason for increase unknown)
510 511 512 513
            # 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)
514 515
            # 2014-10-08  410895536
            #  (various changes; biggest improvements due to 949ad67 and FastString package ids)
516 517 518
            # 2015-08-10: 470895536
            #  (undefined now takes an implicit parameter and GHC -O0 does
            #  not recognize that the application is bottom)
519 520
            # 2015-10-28: 532365376
            #  D757: emit Typeable instances at site of type definition
521 522
      ],
      compile,[''])
Ian Lynagh's avatar
Ian Lynagh committed
523 524 525

test('T5642',
     [ only_ways(['normal']),
Ben Gamari's avatar
Ben Gamari committed
526
       normal,
527
       compiler_stats_num_field('bytes allocated',
528
           [(wordsize(32), 641085256, 10),
529
                     # sample from x86/Linux
Gabor Greif's avatar
Typos  
Gabor Greif committed
530
            # prev:        650000000
531
            # 2014-09-03:  753045568
532
            # 2014-12-10:  641085256 Improvements in constraints solver
533

Ben Gamari's avatar
Ben Gamari committed
534
            (wordsize(64), 950004816, 10)])
535 536
            # prev:        1300000000
            # 2014-07-17:  1358833928 (general round of updates)
537
            # 2014-08-07:  1402242360 (caused by 1fc60ea)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
538
# Watch out for:
Joachim Breitner's avatar
Joachim Breitner committed
539 540 541 542 543
            # 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
544
            # 2014-12-10:  1282916024 Improvements in constraints solver
545
            # 2015-10-28:  1412808976 Emit Typeable at definition site
546
            # 2015-11-22:  1071915072 Use TypeLits in the metadata encoding
Ben Gamari's avatar
Ben Gamari committed
547
            # 2016-02-08:  950004816  Pattern match checker re-rework
Ian Lynagh's avatar
Ian Lynagh committed
548 549
      ],
      compile,['-O'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
550 551 552

test('T5837',
     [ only_ways(['normal']),
553
      compiler_stats_num_field('bytes allocated',
554
          [(wordsize(32), 115905208, 10),
555
             # 40000000 (x86/Linux)
556 557
             # 2013-11-13:  45520936 (x86/Windows, 64bit machine)
             # 2014-09-03:  37096484 (Windows laptop, w/w for INLINABLE things
558
             # 2014-12-01: 135914136 (Windows laptop, regression see below)
559
             # 2014-12-08  115905208  Constraint solver perf improvements (esp kick-out)
560

561
           (wordsize(64), 48507272, 10)])
562
             # sample: 3926235424 (amd64/Linux, 15/2/2012)
563 564
             # 2012-10-02 81879216
             # 2012-09-20 87254264 amd64/Linux
565
             # 2013-09-18 90587232 amd64/Linux
Austin Seipp's avatar
Austin Seipp committed
566 567
             # 2013-11-21 86795752 amd64/Linux, GND via Coercible and counters
             #                                  for constraints solving
568 569
             # 2014-08-29 73639840 amd64/Linux, w/w for INLINABLE things
             # 2014-10-08 73639840 amd64/Linux, Burning Bridges and other small changes
570
             # 2014-11-06 271028976       Linux, Accept big regression;
571
             #   See Note [An alternative story for the inert substitution] in TcFlatten
572
             # 2014-12-08 234790312 Constraint solver perf improvements (esp kick-out)
573 574
             # 2014-12-16 231155640 Mac  Flattener parameterized over roles;
             #                           some optimization
575
             # 2015-03-17 53424304  Mac  Better depth checking; fails earlier
576
             # 2015-06-09 38834096  Better "improvement"; I'm not sure whey it improves things
577
	     # 2015-12-11 43877520  amd64/Linux, TypeInType (see #11196)
578 579
	     # 2016-03-18 48507272  Mac, accept small regression in exchange
	     #                           for other optimisations
Simon Peyton Jones's avatar
Simon Peyton Jones committed
580
      ],
581
      compile_fail,['-freduction-depth=50'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
582 583 584

test('T6048',
     [ only_ways(['optasm']),
585
      compiler_stats_num_field('bytes allocated',
586
          [(wordsize(32), 49987836, 10),
587 588
            # prev:       38000000 (x86/Linux)
            # 2012-10-08: 48887164 (x86/Linux)
589
            # 2014-04-04: 62618072 (x86 Windows, 64 bit machine)
590
            # 2014-09-03: 56315812 (x86 Windows, w/w for INLINEAVBLE)
591 592
            # 2014-12-01: 49987836 (x86 Windows)

Ben Gamari's avatar
Ben Gamari committed
593
           (wordsize(64),  108225624, 12)])
594
             # 18/09/2012  97247032 amd64/Linux
595
             # 16/01/2014 108578664 amd64/Linux (unknown, likely foldl-via-foldr)
596
             # 18/01/2014  95960720 amd64/Linux Call Arity improvements
Austin Seipp's avatar
Austin Seipp committed
597
             # 28/02/2014 105556793 amd64/Linux (unknown, tweak in base/4d9e7c9e3 resulted in change)
Joachim Breitner's avatar
Joachim Breitner committed
598
             # 05/03/2014 110646312 amd64/Linux Call Arity became more elaborate
599
             # 14/07/2014 125431448 amd64/Linux unknown reason. Even worse in GHC-7.8.3. *shurg*
600
             # 29/08/2014 108354472 amd64/Linux w/w for INLINABLE things
601
             # 14/09/2014  88186056 amd64/Linux BPP part1 change (more NoImplicitPreludes in base)
602
             # 08/01/2014  95946688 amd64/Linux Mostly 4c834fd. Occasional spikes to 103822120!
Ben Gamari's avatar
Ben Gamari committed
603
             # 11/03/2016 108225624 amd64/Linux unknown reason sadly; likely gradual creep.
Simon Peyton Jones's avatar
Simon Peyton Jones committed
604 605
      ],
      compile,[''])
606 607 608 609

test('T9020',
     [ only_ways(['optasm']),
      compiler_stats_num_field('bytes allocated',
610 611 612
          [(wordsize(32), 343005716, 10),
           # Original:    381360728
           # 2014-07-31:  343005716 (Windows) (general round of updates)
613
           (wordsize(64), 698401736, 10)])
614 615
           # prev:        795469104
           # 2014-07-17:  728263536 (general round of updates)
Joachim Breitner's avatar
Joachim Breitner committed
616
           # 2014-09-10:  785871680 post-AMP-cleanup
David Feuer's avatar
David Feuer committed
617
           # 2014-11-03:  680162056 Further Applicative and Monad adjustments
618
           # 2015-10-21:  786189008 Make stronglyConnCompFromEdgedVertices deterministic
619
	   # 2016-01-26:  698401736 improvement from using ExpTypes instead of ReturnTvs
620 621
      ],
      compile,[''])
622 623 624

test('T9675',
     [ only_ways(['optasm']),
625
       compiler_stats_num_field('max_bytes_used', # Note [residency]
626
          [(wordsize(64), 30837312, 15),
627
          # 2014-10-13    29596552
628
          # 2014-10-13    26570896   seq the DmdEnv in seqDmdType as well
629
          # 2014-10-13    18582472   different machines giving different results..
630
          # 2014-10-13    22220552   use the mean
631
          # 2015-06-21    28056344   switch to `+RTS -G1`, tighten bound to 15%
632
          # 2015-10-28    23776640   emit Typeable at definition site
633
	  # 2015-12-11    30837312   TypeInType (see #11196)
634 635
           (wordsize(32), 15341228, 15)
 	  # 2015-07-11    15341228   (x86/Linux, 64-bit machine) use +RTS -G1
636
          ]),
637
       compiler_stats_num_field('peak_megabytes_allocated', # Note [residency]
638
          [(wordsize(64), 113, 15),
639
          # 2014-10-13    66
640
          # 2014-10-13    58         seq the DmdEnv in seqDmdType as well
641
          # 2014-10-13    49         different machines giving different results...
642
          # 2014-10-13    53         use the mean
643 644
          # 2015-06-15    44         reduced for some reason
          # 2015-06-21    105        switch to `+RTS -G1`
645
          # 2015-12-04    88         new pattern checker (D1535)
646
	  # 2015-12-11    113        TypeInType (see #11196)
647 648
            (wordsize(32), 56, 15)
 	  # 2015-07-11    56         (x86/Linux, 64-bit machine) use +RTS -G1
649 650
          ]),
       compiler_stats_num_field('bytes allocated',
651
          [(wordsize(64), 608284152, 10)
652
          # 2014-10-13    544489040
653
          # 2015-10-28    608284152  emit Typeable at definition site
654 655
          ,(wordsize(32), 279480696, 10)
 	  # 2015-07-11    279480696  (x86/Linux, 64-bit machine) use +RTS -G1
656
          ]),
657 658

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
659
       extra_hc_opts('+RTS -G1 -RTS')
660 661 662
      ],
     compile,
     [''])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
663 664 665 666

test('T9872a',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
667
          [(wordsize(64), 3581500440, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
668
          # 2014-12-10    5521332656    Initally created
669
          # 2014-12-16    5848657456    Flattener parameterized over roles
670
          # 2014-12-18    2680733672    Reduce type families even more eagerly
671
	  # 2015-12-11    3581500440    TypeInType (see #11196)
672
           (wordsize(32), 1325592896, 5)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
673 674 675 676 677 678 679 680
          ]),
      ],
     compile_fail,
     [''])

test('T9872b',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
681
          [(wordsize(64), 4918990352, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
682
          # 2014-12-10    6483306280    Initally created
683
          # 2014-12-16    6892251912    Flattener parameterized over roles
684
          # 2014-12-18    3480212048    Reduce type families even more eagerly
685
	  # 2015-12-11    5199926080    TypeInType (see #11196)
686
	  # 2016-02-08    4918990352    Improved a bit by tyConRolesRepresentational
687
           (wordsize(32), 1700000000, 5)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
688 689 690 691
          ]),
      ],
     compile_fail,
     [''])
692 693 694
test('T9872c',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
695
          [(wordsize(64), 4454071184, 5),
696
          # 2014-12-10    5495850096    Initally created
697
          # 2014-12-16    5842024784    Flattener parameterized over roles
698
          # 2014-12-18    2963554096    Reduce type families even more eagerly
699
	  # 2015-12-11    4723613784    TypeInType (see #11196)
700
	  # 2016-02-08    4454071184    Improved a bit by tyConRolesRepresentational
701
           (wordsize(32), 1500000000, 5)
702 703 704 705
          ]),
      ],
     compile_fail,
     [''])
706 707
test('T9872d',
     [ only_ways(['normal']),
708
       compiler_stats_num_field('bytes allocated',
709
          [(wordsize(64), 506691240, 5),
710 711
          # 2014-12-18    796071864   Initally created
          # 2014-12-18    739189056   Reduce type families even more eagerly
712
          # 2015-01-07    687562440   TrieMap leaf compression
713
          # 2015-03-17    726679784   tweak to solver; probably flattens more
714
	  # 2016-02-08    534693648   Improved a bit by tyConRolesRepresentational
715
	  # 2016-03-18    506691240   optimize Unify & zonking
716
           (wordsize(32), 59651432, 5)
Ben Gamari's avatar
Ben Gamari committed
717 718
          # some date     328810212
          # 2015-07-11    350369584
719 720
	  # 2015-12-11    566134504   TypeInType; see #11196
          ]),
721 722 723
      ],
     compile,
     [''])
724 725 726 727

test('T9961',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
728
          [(wordsize(64), 568526784, 5),
729
          # 2015-01-12    807117816   Initally created
730 731
          # 2015-spring   772510192   Got better
          # 2015-05-22    663978160   Fix for #10370 improves it more
732 733
          # 2015-10-28    708680480   x86_64/Linux   Emit Typeable at definition site
          # 2015-12-17    745044392   x86_64/Darwin  Creep upwards
734 735
          # 2016-03-20    519436672   x64_64/Linux   Don't use build desugaring for large lists (#11707)
          # 2016-03-24    568526784   x64_64/Linux   Add eqInt* variants (#11688)
736
           (wordsize(32), 375647160, 5)
737 738 739 740
          ]),
      ],
     compile,
     ['-O'])
741 742 743 744 745 746 747 748 749 750 751 752

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'])
Ben Gamari's avatar
Ben Gamari committed
753 754 755 756

test('T10370',
     [ only_ways(['optasm']),
       compiler_stats_num_field('max_bytes_used', # Note [residency]
757
          [(wordsize(64), 22823976, 15),
Ben Gamari's avatar
Ben Gamari committed
758
          # 2015-10-22    19548720
759
	  # 2016-02-24    22823976   Changing Levity to RuntimeRep; not sure why this regresses though, even after some analysis
Ben Gamari's avatar
Ben Gamari committed
760 761 762 763 764 765 766 767 768 769 770 771 772 773
           (wordsize(32), 11371496, 15),
          # 2015-10-22    11371496
          ]),
       compiler_stats_num_field('peak_megabytes_allocated', # Note [residency]
          [(wordsize(64), 76, 15),
          # 2015-10-22    76
           (wordsize(32), 39, 15),
          # 2015-10-22    39
          ]),
       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
       extra_hc_opts('+RTS -G1 -RTS')
     ],
     compile,
     [''])