all.T 40.9 KB
Newer Older
thomie's avatar
thomie committed
1 2 3
# Tests that call 'compiler_stats_num_field' are skipped when debugging is on.
# See testsuite/driver/testlib.py.

4
def no_lint(name, opts):
5
   opts.compiler_always_flags = \
6
       [opt for opt in opts.compiler_always_flags if opt != '-dcore-lint' and opt != '-dcmm-lint']
7

Simon Marlow's avatar
Simon Marlow committed
8
setTestOpts(no_lint)
9 10


Simon Marlow's avatar
Simon Marlow committed
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
# Note [residency]
#
# Residency (peak_megabytes_allocated and max_bytes_used) is sensitive
# to when the major GC runs, which makes it inherently inaccurate.
# Sometime an innocuous change somewhere can shift things around such
# that the samples occur at a different time, and the residency
# appears to change (up or down) when the underlying profile hasn't
# really changed.
#
# However, please don't just ignore changes in residency.  If you see
# a change in one of these figures, please check whether it is real or
# not as follows:
#
#  * Run the test with old and new compilers, adding +RTS -h -i0.01
#    (you don't need to compile anything for profiling or enable profiling
#    libraries to get a heap profile).
#  * view the heap profiles, read off the maximum residency.  If it has
#    really changed, then you know there's an issue.

Simon Marlow's avatar
Simon Marlow committed
30
test('T1969',
31 32
     [expect_broken(12437),
      compiler_stats_num_field('peak_megabytes_allocated', # Note [residency]
33
          [(wordsize(32), 30, 15),
34 35 36 37 38
             # 2010-05-17 14 (x86/Windows)
             #            15 (x86/OS X)
             #            19 (x86/OS X)
             # 2013-02-10 13 (x86/Windows)
             # 2013-02-10 14 (x86/OSX)
39
             # 2013-11-13 17 (x86/Windows, 64bit machine)
40
             # 2015-07-11 21 (x86/Linux, 64bit machine) use +RTS -G1
41
             # 2016-04-06 30 (x86/Linux, 64bit machine)
42
           (wordsize(64), 55, 20)]),
43 44 45 46
             #            28 (amd64/Linux)
             #            34 (amd64/Linux)
             # 2012-09-20 23 (amd64/Linux)
             # 2012-10-03 25 (amd64/Linux if .hi exists)
47
             # 2013-02-13 23, but unstable so increased to 10% range
Simon Peyton Jones's avatar
Simon Peyton Jones committed
48
             # 2013-02-13 27, very unstable!
Joachim Breitner's avatar
Joachim Breitner committed
49
             # 2014-09-10 29 (amd64/Linux) post-AMP-cleanup
50 51
             # 2013-09-11 30, 10 (amd64/Linux)
             # 2013-09-11 30, 15 (adapt to Phab CI)
52
             # 2015-06-03 41, (amd64/Linux) use +RTS -G1
53
             # 2015-10-28 55, (amd64/Linux) emit Typeable at definition site
54
      compiler_stats_num_field('max_bytes_used',
55
          [(platform('i386-unknown-mingw32'), 5719436, 20),
56 57
                                 # 2010-05-17 5717704 (x86/Windows)
                                 # 2013-02-10 5159748 (x86/Windows)
58
                                 # 2013-02-10 5030080 (x86/Windows)
59
                                 # 2013-11-13 7295012 (x86/Windows, 64bit machine)
60
                                 # 2014-04-24 5719436 (x86/Windows, 64bit machine)
61
           (wordsize(32), 9093608, 1),
62 63
             #            6707308 (x86/OS X)
             # 2009-12-31 6149572 (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
64
             # 2014-01-22 6429864 (x86/Linux)
65
             # 2014-06-29 5949188 (x86/Linux)
66
             # 2015-07-11 6241108 (x86/Linux, 64bit machine) use +RTS -G1
67
             # 2016-04-06 9093608 (x86/Linux, 64bit machine)
68
           (wordsize(64), 15017528, 15)]),
Joachim Breitner's avatar
Joachim Breitner committed
69
             # 2014-09-10 10463640, 10  # post-AMP-update (somewhat stabelish)
Austin Seipp's avatar
Austin Seipp committed
70
               # looks like the peak is around ~10M, but we're
71 72 73
               # unlikely to GC exactly on the peak.
               # varies quite a lot with CLEANUP and BINDIST,
               # hence 10% range.
Simon Marlow's avatar
Simon Marlow committed
74
               # See Note [residency] to get an accurate view.
75 76
             # 2014-09-14  9684256, 10 # try to lower it a bit more to match Phab's CI
             # 2014-11-03 10584344,    # ghcspeed reports higher numbers consistently
Ben Gamari's avatar
Ben Gamari committed
77
             # 2015-07-11 11670120 (amd64/Linux)
78
             # 2015-10-28 15017528 (amd64/Linux) emit typeable at definition site
79
      compiler_stats_num_field('bytes allocated',
80
          [(platform('i386-unknown-mingw32'), 301784492, 5),
81 82
                                 #            215582916 (x86/Windows)
                                 # 2012-10-29 298921816 (x86/Windows)
83
                                 # 2013-02-10 310633884 (x86/Windows)
84
                                 # 2013-11-13 317975916 (x86/Windows, 64bit machine)
85
                                 # 2014-04-04 301784492 (x86/Windows, 64bit machine)
86
           (wordsize(32), 344730660, 1),
87 88 89 90
             #            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
91
             # 2014-01-22 316103268 (x86/Linux)
92
             # 2014-06-29 303300692 (x86/Linux)
93
             # 2015-07-11 288699104 (x86/Linux, 64-bit machine) use +RTS -G1
94
             # 2016-04-06 344730660 (x86/Linux, 64-bit machine)
95
           (wordsize(64), 756138176, 5)]),
96 97 98 99 100 101 102
             # 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)
103
             # 29/08/2012 633334184 (amd64/Linux) new codegen
104
             # 18/09/2012 641959976 (amd64/Linux)
105 106 107 108 109
             # 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
110
             # 10/02/2014 660922376 (x86_64/Linux) call arity analysis
111
             # 17/07/2014 651626680 (x86_64/Linux) roundabout update
Joachim Breitner's avatar
Joachim Breitner committed
112
             # 10/09/2014 630299456 (x86_64/Linux) post-AMP-cleanup
113
             # 03/06/2015 581460896 (x86_64/Linux) use +RTS -G1
114
             # 28/10/2015 695430728 (x86_64/Linux) emit Typeable at definition site
115
             # 28/10/2015 756138176 (x86_64/Linux) inst-decl defaults go via typechecker (#12220)
116
      only_ways(['normal']),
117

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

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

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

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

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

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

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

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

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

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

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

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

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

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

358 359 360
       only_ways(['normal']),

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

Ian Lynagh's avatar
Ian Lynagh committed
366 367 368 369 370
test('T4007',
     normal,
     run_command,
     ['$MAKE -s --no-print-directory T4007'])

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

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

401 402 403
       only_ways(['normal'])
      ],
     compile,
404
     ['-freduction-depth=300'])
405

Simon Peyton Jones's avatar
Simon Peyton Jones committed
406
test('T5631',
407
     [compiler_stats_num_field('bytes allocated',
408
          [(wordsize(32), 570137436, 10),
409
        # expected value: 392904228 (x86/Linux)
410
        # 2014-04-04:     346389856 (x86 Windows, 64 bit machine)
411
        # 2014-12-01:     390199244 (Windows laptop)
412
        # 2016-04-06:     570137436 (amd64/Linux) many reasons
413
           (wordsize(64), 1124068664, 5)]),
414
        # expected value: 774595008 (amd64/Linux):
415
        # expected value: 735486328 (amd64/Linux) 2012/12/12:
416
        # expected value: 690742040 (amd64/Linux) Call Arity improvements
417
        # 2014-09-09:     739704712 (amd64/Linux) AMP changes
418
        # 2014-11-04:     776121120 (amd64/Linux) new-flatten-skolems
419
        # 2015-06-01:     812288344 (amd64/Linux) unknown cause
420 421 422
        # 2015-12-11:     1128828928 (amd64/Linux) TypeInType (see #11196)
        # 2015-12-21:     1198327544 (Mac) TypeApplications (will fix with #11196)
        # 2015-03-18:     1124068664 (Mac) optimize Unify & zonking
Simon Peyton Jones's avatar
Simon Peyton Jones committed
423 424 425 426 427
       only_ways(['normal'])
      ],
     compile,
     [''])

428
test('parsing001',
429 430
     [compiler_stats_num_field('bytes allocated',
          [(wordsize(32), 274000576, 10),
431
           (wordsize(64), 587079016, 5)]),
432
        # expected value: 587079016 (amd64/Linux)
433 434 435 436 437
       only_ways(['normal']),
      ],
     compile_fail, [''])


438 439 440
test('T783',
     [ only_ways(['normal']),  # no optimisation for this one
      # expected value: 175,569,928 (x86/Linux)
441
      compiler_stats_num_field('bytes allocated',
442
          [(wordsize(32), 249332816, 5),
443
            # 2012-10-08: 226907420 (x86/Linux)
444 445
            # 2013-02-10: 329202116 (x86/Windows)
            # 2013-02-10: 338465200 (x86/OSX)
446
            # 2014-04-04: 319179104 (x86 Windows, 64 bit machine)
447 448
            # 2014-09-03: 223377364 (Windows) better specialisation, raft of core-to-core optimisations
            # 2014-12-22: 235002220 (Windows) not sure why
449
            # 2016-04-06: 249332816 (x86/Linux, 64-bit machine)
450

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

test('T5321Fun',
     [ only_ways(['normal']),  # no optimisation for this one
486
       compiler_stats_num_field('bytes allocated',
487
           [(wordsize(32), 279922360, 10),
488 489 490
             # prev:       300000000
             # 2012-10-08: 344416344 x86/Linux
             #  (increase due to new codegen)
491
             # 2014-09-03: 299656164     (specialisation and inlining)
492
             # 10/12/2014: 206406188     #  Improvements in constraint solver
493
             # 2016-04-06: 279922360 x86/Linux
494
            (wordsize(64), 565883176, 10)])
495
             # prev:       585521080
496 497 498 499
             # 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
500
             # 10/09/2014: 601629032     #  post-AMP-cleanup
501
             # 06/11/2014: 541287000     #  Simon's flat-skol changes to the constraint solver
502
             # 10/12/2014: 408110888     #  Improvements in constraint solver
503
             # 16/12/2014: 429921312     #  Flattener parameterized over roles
504 505 506
             # 10/08/2015: 509921312
             #  (undefined now takes an implicit parameter and GHC -O0 does
             #  not recognize that the application is bottom)
507
             # 11/12/2015: 565883176     #  TypeInType (see #11196)
508 509 510 511 512
      ],
      compile,[''])

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

test('T5642',
     [ only_ways(['normal']),
Ben Gamari's avatar
Ben Gamari committed
547
       normal,
548
       compiler_stats_num_field('bytes allocated',
549
           [(wordsize(32), 462677300, 10),
550
                     # sample from x86/Linux
Gabor Greif's avatar
Typos  
Gabor Greif committed
551
            # prev:        650000000
552
            # 2014-09-03:  753045568
553
            # 2014-12-10:  641085256 Improvements in constraints solver
554
            # 2016-04-06:  462677300
555

556
            (wordsize(64),  916484672, 10)])
557 558
            # prev:        1300000000
            # 2014-07-17:  1358833928 (general round of updates)
559
            # 2014-08-07:  1402242360 (caused by 1fc60ea)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
560
# Watch out for:
Joachim Breitner's avatar
Joachim Breitner committed
561 562 563 564 565
            # 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
566
            # 2014-12-10:  1282916024 Improvements in constraints solver
567
            # 2015-10-28:  1412808976 Emit Typeable at definition site
568
            # 2015-11-22:  1071915072 Use TypeLits in the metadata encoding
569
            # 2016-02-08:   950004816 Pattern match checker re-rework
Ryan Scott's avatar
Ryan Scott committed
570
            # 2016-05-12:  1300685592 Make Generic1 poly-kinded
571
            # 2016-06-05:   916484672 Refactor derived Generic instances to reduce allocations
Ian Lynagh's avatar
Ian Lynagh committed
572 573
      ],
      compile,['-O'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
574 575 576

test('T5837',
     [ only_ways(['normal']),
577
      compiler_stats_num_field('bytes allocated',
578
          [(wordsize(32), 24199320, 10),
579
             # 40000000 (x86/Linux)
580 581
             # 2013-11-13:  45520936 (x86/Windows, 64bit machine)
             # 2014-09-03:  37096484 (Windows laptop, w/w for INLINABLE things
582
             # 2014-12-01: 135914136 (Windows laptop, regression see below)
583 584
             # 2014-12-08: 115905208  Constraint solver perf improvements (esp kick-out)
             # 2016-04-06: 24199320  (x86/Linux, 64-bit machine) TypeInType
585

586
           (wordsize(64), 48507272, 10)])
587
             # sample: 3926235424 (amd64/Linux, 15/2/2012)
588 589
             # 2012-10-02 81879216
             # 2012-09-20 87254264 amd64/Linux
590
             # 2013-09-18 90587232 amd64/Linux
Austin Seipp's avatar
Austin Seipp committed
591 592
             # 2013-11-21 86795752 amd64/Linux, GND via Coercible and counters
             #                                  for constraints solving
593 594
             # 2014-08-29 73639840 amd64/Linux, w/w for INLINABLE things
             # 2014-10-08 73639840 amd64/Linux, Burning Bridges and other small changes
595
             # 2014-11-06 271028976       Linux, Accept big regression;
596
             #   See Note [An alternative story for the inert substitution] in TcFlatten
597
             # 2014-12-08 234790312 Constraint solver perf improvements (esp kick-out)
598 599
             # 2014-12-16 231155640 Mac  Flattener parameterized over roles;
             #                           some optimization
600
             # 2015-03-17 53424304  Mac  Better depth checking; fails earlier
601
             # 2015-06-09 38834096  Better "improvement"; I'm not sure whey it improves things
602 603 604
             # 2015-12-11 43877520  amd64/Linux, TypeInType (see #11196)
             # 2016-03-18 48507272  Mac, accept small regression in exchange
             #                           for other optimisations
Simon Peyton Jones's avatar
Simon Peyton Jones committed
605
      ],
606
      compile_fail,['-freduction-depth=50'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
607 608 609

test('T6048',
     [ only_ways(['optasm']),
610
      compiler_stats_num_field('bytes allocated',
611
          [(wordsize(32), 55701280, 10),
612 613
            # prev:       38000000 (x86/Linux)
            # 2012-10-08: 48887164 (x86/Linux)
614
            # 2014-04-04: 62618072 (x86 Windows, 64 bit machine)
615
            # 2014-09-03: 56315812 (x86 Windows, w/w for INLINEABLE)
616
            # 2014-12-01: 49987836 (x86 Windows)
617
            # 2016-04-06: 55701280 (x86/Linux, 64-bit machine)
618

Ben Gamari's avatar
Ben Gamari committed
619
           (wordsize(64),  108225624, 12)])
620
             # 18/09/2012  97247032 amd64/Linux
621
             # 16/01/2014 108578664 amd64/Linux (unknown, likely foldl-via-foldr)
622
             # 18/01/2014  95960720 amd64/Linux Call Arity improvements
Austin Seipp's avatar
Austin Seipp committed
623
             # 28/02/2014 105556793 amd64/Linux (unknown, tweak in base/4d9e7c9e3 resulted in change)
Joachim Breitner's avatar
Joachim Breitner committed
624
             # 05/03/2014 110646312 amd64/Linux Call Arity became more elaborate
625
             # 14/07/2014 125431448 amd64/Linux unknown reason. Even worse in GHC-7.8.3. *shurg*
626
             # 29/08/2014 108354472 amd64/Linux w/w for INLINABLE things
627
             # 14/09/2014  88186056 amd64/Linux BPP part1 change (more NoImplicitPreludes in base)
628
             # 08/01/2014  95946688 amd64/Linux Mostly 4c834fd. Occasional spikes to 103822120!
Ben Gamari's avatar
Ben Gamari committed
629
             # 11/03/2016 108225624 amd64/Linux unknown reason sadly; likely gradual creep.
Simon Peyton Jones's avatar
Simon Peyton Jones committed
630 631
      ],
      compile,[''])
632 633 634 635

test('T9020',
     [ only_ways(['optasm']),
      compiler_stats_num_field('bytes allocated',
636 637 638
          [(wordsize(32), 343005716, 10),
           # Original:    381360728
           # 2014-07-31:  343005716 (Windows) (general round of updates)
639
           (wordsize(64), 698401736, 10)])
640 641
           # prev:        795469104
           # 2014-07-17:  728263536 (general round of updates)
Joachim Breitner's avatar
Joachim Breitner committed
642
           # 2014-09-10:  785871680 post-AMP-cleanup
David Feuer's avatar
David Feuer committed
643
           # 2014-11-03:  680162056 Further Applicative and Monad adjustments
644
           # 2015-10-21:  786189008 Make stronglyConnCompFromEdgedVertices deterministic
645
           # 2016-01-26:  698401736 improvement from using ExpTypes instead of ReturnTvs
646
           # 2016-04-06:  852298336 Refactoring of CSE #11781
647
           # 2016-04-06:  698401736 Use thenIO in Applicative IO
648 649
      ],
      compile,[''])
650 651 652

test('T9675',
     [ only_ways(['optasm']),
653
       compiler_stats_num_field('max_bytes_used', # Note [residency]
654
          [(wordsize(64), 38776008, 15),
655
          # 2014-10-13    29596552
656
          # 2014-10-13    26570896   seq the DmdEnv in seqDmdType as well
657
          # 2014-10-13    18582472   different machines giving different results..
658
          # 2014-10-13    22220552   use the mean
659
          # 2015-06-21    28056344   switch to `+RTS -G1`, tighten bound to 15%
660
          # 2015-10-28    23776640   emit Typeable at definition site
661
          # 2015-12-11    30837312   TypeInType (see #11196)
662
          # 2016-04-14    38776008   Final demand analyzer run
663 664 665
           (wordsize(32), 18043224, 15)
          # 2015-07-11    15341228   (x86/Linux, 64-bit machine) use +RTS -G1
          # 2016-04-06    18043224   (x86/Linux, 64-bit machine)
666
          ]),
667
       compiler_stats_num_field('peak_megabytes_allocated', # Note [residency]
Simon Marlow's avatar
Simon Marlow committed
668
          [(wordsize(64), 121, 15),
669
          # 2014-10-13    66
670
          # 2014-10-13    58         seq the DmdEnv in seqDmdType as well
671
          # 2014-10-13    49         different machines giving different results...
672
          # 2014-10-13    53         use the mean
673 674
          # 2015-06-15    44         reduced for some reason
          # 2015-06-21    105        switch to `+RTS -G1`
675
          # 2015-12-04    88         new pattern checker (D1535)
676
          # 2015-12-11    113        TypeInType (see #11196)
677
          # 2016-04-14    144        Final demand analyzer run
Simon Marlow's avatar
Simon Marlow committed
678
          # 2016-07-26    121        Unboxed sums?
679
            (wordsize(32), 56, 15)
680
          # 2015-07-11    56         (x86/Linux, 64-bit machine) use +RTS -G1
681 682
          ]),
       compiler_stats_num_field('bytes allocated',
683
          [(wordsize(64), 608284152, 10)
684
          # 2014-10-13    544489040
685
          # 2015-10-28    608284152  emit Typeable at definition site
686
          ,(wordsize(32), 279480696, 10)
687
          # 2015-07-11    279480696  (x86/Linux, 64-bit machine) use +RTS -G1
688
          ]),
689 690

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
691
       extra_hc_opts('+RTS -G1 -RTS')
692 693 694
      ],
     compile,
     [''])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
695 696 697 698

test('T9872a',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
Joachim Breitner's avatar
Joachim Breitner committed
699
          [(wordsize(64), 3352882080, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
700
          # 2014-12-10    5521332656    Initally created
701
          # 2014-12-16    5848657456    Flattener parameterized over roles
702
          # 2014-12-18    2680733672    Reduce type families even more eagerly
703
          # 2015-12-11    3581500440    TypeInType (see #11196)
Joachim Breitner's avatar
Joachim Breitner committed
704
          # 2016-04-07    3352882080    CSE improvements
705 706 707
           (wordsize(32), 1740903516, 5)
          # was           1325592896
          # 2016-04-06    1740903516    x86/Linux
Simon Peyton Jones's avatar
Simon Peyton Jones committed
708 709 710 711 712 713 714 715
          ]),
      ],
     compile_fail,
     [''])

test('T9872b',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
716
          [(wordsize(64), 4600233488, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
717
          # 2014-12-10    6483306280    Initally created
718
          # 2014-12-16    6892251912    Flattener parameterized over roles
719
          # 2014-12-18    3480212048    Reduce type families even more eagerly
720 721
          # 2015-12-11    5199926080    TypeInType (see #11196)
          # 2016-02-08    4918990352    Improved a bit by tyConRolesRepresentational
722
          # 2016-04-06:   4600233488    Refactoring of CSE #11781
723 724 725
           (wordsize(32), 2422750696, 5)
          # was           1700000000
          # 2016-04-06    2422750696    x86/Linux
Simon Peyton Jones's avatar
Simon Peyton Jones committed
726 727 728 729
          ]),
      ],
     compile_fail,
     [''])
730 731 732
test('T9872c',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
733
          [(wordsize(64), 4306667256, 5),
734
          # 2014-12-10    5495850096    Initally created
735
          # 2014-12-16    5842024784    Flattener parameterized over roles
736
          # 2014-12-18    2963554096    Reduce type families even more eagerly
737 738
          # 2015-12-11    4723613784    TypeInType (see #11196)
          # 2016-02-08    4454071184    Improved a bit by tyConRolesRepresentational
739
          # 2016-04-06:   4306667256    Refactoring of CSE #11781
740 741 742
           (wordsize(32), 2257242896, 5)
          # was           1500000000
          # 2016-04-06    2257242896
743 744 745 746
          ]),
      ],
     compile_fail,
     [''])
747 748
test('T9872d',
     [ only_ways(['normal']),
749
       compiler_stats_num_field('bytes allocated',
750
          [(wordsize(64), 506691240, 5),
751 752
          # 2014-12-18    796071864   Initally created
          # 2014-12-18    739189056   Reduce type families even more eagerly
753
          # 2015-01-07    687562440   TrieMap leaf compression
754
          # 2015-03-17    726679784   tweak to solver; probably flattens more
755
          # 2015-12-11    566134504   TypeInType; see #11196
756 757