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

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

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

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

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

      # Use `+RTS -G1` for more stable residency measurements. Note [residency].
191
      extra_hc_opts('+RTS -G1 -RTS')
Simon Marlow's avatar
Simon Marlow committed
192 193 194
      ],
     compile,
     [''])
Ian Lynagh's avatar
Ian Lynagh committed
195

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

218
      compiler_stats_num_field('bytes allocated',
219 220 221
          [(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
222

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

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

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
265
       extra_hc_opts('+RTS -G1 -RTS')
266
       ],
Simon Peyton Jones's avatar
Simon Peyton Jones committed
267 268 269
     compile,
     [''])

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

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

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

325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348
###################################
# 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
349

350 351 352
       only_ways(['normal']),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
353
       extra_hc_opts('+RTS -G1 -RTS')
Ian Lynagh's avatar
Ian Lynagh committed
354 355 356 357
      ],
     compile,
     [''])

Ian Lynagh's avatar
Ian Lynagh committed
358 359 360 361 362
test('T4007',
     normal,
     run_command,
     ['$MAKE -s --no-print-directory T4007'])

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

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

393 394 395
       only_ways(['normal'])
      ],
     compile,
396
     ['-freduction-depth=300'])
397

Simon Peyton Jones's avatar
Simon Peyton Jones committed
398
test('T5631',
399
     [compiler_stats_num_field('bytes allocated',
400
          [(wordsize(32), 570137436, 10),
401
        # expected value: 392904228 (x86/Linux)
402
        # 2014-04-04:     346389856 (x86 Windows, 64 bit machine)
403
        # 2014-12-01:     390199244 (Windows laptop)
404
        # 2016-04-06:     570137436 (amd64/Linux) many reasons
405
           (wordsize(64), 1124068664, 5)]),
406
        # expected value: 774595008 (amd64/Linux):
407
        # expected value: 735486328 (amd64/Linux) 2012/12/12:
408
        # expected value: 690742040 (amd64/Linux) Call Arity improvements
409
        # 2014-09-09:     739704712 (amd64/Linux) AMP changes
410
        # 2014-11-04:     776121120 (amd64/Linux) new-flatten-skolems
411
        # 2015-06-01:     812288344 (amd64/Linux) unknown cause
412 413 414
        # 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
415 416 417 418 419
       only_ways(['normal'])
      ],
     compile,
     [''])

420
test('parsing001',
421 422 423 424
     [compiler_stats_num_field('bytes allocated',
          [(wordsize(32), 274000576, 10),
           (wordsize(64), 587079016, 5)]),
        # expected value: 587079016 (amd64/Linux)
425 426 427 428 429
       only_ways(['normal']),
      ],
     compile_fail, [''])


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

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

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

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

test('T5642',
     [ only_ways(['normal']),
Ben Gamari's avatar
Ben Gamari committed
537
       normal,
538
       compiler_stats_num_field('bytes allocated',
539
           [(wordsize(32), 462677300, 10),
540
                     # sample from x86/Linux
Gabor Greif's avatar
Typos  
Gabor Greif committed
541
            # prev:        650000000
542
            # 2014-09-03:  753045568
543
            # 2014-12-10:  641085256 Improvements in constraints solver
544
            # 2016-04-06:  462677300
545

Ben Gamari's avatar
Ben Gamari committed
546
            (wordsize(64), 950004816, 10)])
547 548
            # prev:        1300000000
            # 2014-07-17:  1358833928 (general round of updates)
549
            # 2014-08-07:  1402242360 (caused by 1fc60ea)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
550
# Watch out for:
Joachim Breitner's avatar
Joachim Breitner committed
551 552 553 554 555
            # 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
556
            # 2014-12-10:  1282916024 Improvements in constraints solver
557
            # 2015-10-28:  1412808976 Emit Typeable at definition site
558
            # 2015-11-22:  1071915072 Use TypeLits in the metadata encoding
Ben Gamari's avatar
Ben Gamari committed
559
            # 2016-02-08:  950004816  Pattern match checker re-rework
Ian Lynagh's avatar
Ian Lynagh committed
560 561
      ],
      compile,['-O'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
562 563 564

test('T5837',
     [ only_ways(['normal']),
565
      compiler_stats_num_field('bytes allocated',
566
          [(wordsize(32), 24199320, 10),
567
             # 40000000 (x86/Linux)
568 569
             # 2013-11-13:  45520936 (x86/Windows, 64bit machine)
             # 2014-09-03:  37096484 (Windows laptop, w/w for INLINABLE things
570
             # 2014-12-01: 135914136 (Windows laptop, regression see below)
571 572
             # 2014-12-08: 115905208  Constraint solver perf improvements (esp kick-out)
             # 2016-04-06: 24199320  (x86/Linux, 64-bit machine) TypeInType
573

574
           (wordsize(64), 48507272, 10)])
575
             # sample: 3926235424 (amd64/Linux, 15/2/2012)
576 577
             # 2012-10-02 81879216
             # 2012-09-20 87254264 amd64/Linux
578
             # 2013-09-18 90587232 amd64/Linux
Austin Seipp's avatar
Austin Seipp committed
579 580
             # 2013-11-21 86795752 amd64/Linux, GND via Coercible and counters
             #                                  for constraints solving
581 582
             # 2014-08-29 73639840 amd64/Linux, w/w for INLINABLE things
             # 2014-10-08 73639840 amd64/Linux, Burning Bridges and other small changes
583
             # 2014-11-06 271028976       Linux, Accept big regression;
584
             #   See Note [An alternative story for the inert substitution] in TcFlatten
585
             # 2014-12-08 234790312 Constraint solver perf improvements (esp kick-out)
586 587
             # 2014-12-16 231155640 Mac  Flattener parameterized over roles;
             #                           some optimization
588
             # 2015-03-17 53424304  Mac  Better depth checking; fails earlier
589
             # 2015-06-09 38834096  Better "improvement"; I'm not sure whey it improves things
590 591 592
             # 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
593
      ],
594
      compile_fail,['-freduction-depth=50'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
595 596 597

test('T6048',
     [ only_ways(['optasm']),
598
      compiler_stats_num_field('bytes allocated',
599
          [(wordsize(32), 55701280, 10),
600 601
            # prev:       38000000 (x86/Linux)
            # 2012-10-08: 48887164 (x86/Linux)
602
            # 2014-04-04: 62618072 (x86 Windows, 64 bit machine)
603
            # 2014-09-03: 56315812 (x86 Windows, w/w for INLINEABLE)
604
            # 2014-12-01: 49987836 (x86 Windows)
605
            # 2016-04-06: 55701280 (x86/Linux, 64-bit machine)
606

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

test('T9020',
     [ only_ways(['optasm']),
      compiler_stats_num_field('bytes allocated',
624 625 626
          [(wordsize(32), 343005716, 10),
           # Original:    381360728
           # 2014-07-31:  343005716 (Windows) (general round of updates)
627
           (wordsize(64), 698401736, 10)])
628 629
           # prev:        795469104
           # 2014-07-17:  728263536 (general round of updates)
Joachim Breitner's avatar
Joachim Breitner committed
630
           # 2014-09-10:  785871680 post-AMP-cleanup
David Feuer's avatar
David Feuer committed
631
           # 2014-11-03:  680162056 Further Applicative and Monad adjustments
632
           # 2015-10-21:  786189008 Make stronglyConnCompFromEdgedVertices deterministic
633
           # 2016-01-26:  698401736 improvement from using ExpTypes instead of ReturnTvs
634
           # 2016-04-06:  852298336 Refactoring of CSE #11781
635
           # 2016-04-06:  698401736 Use thenIO in Applicative IO
636 637
      ],
      compile,[''])
638 639 640

test('T9675',
     [ only_ways(['optasm']),
641
       compiler_stats_num_field('max_bytes_used', # Note [residency]
642
          [(wordsize(64), 38776008, 15),
643
          # 2014-10-13    29596552
644
          # 2014-10-13    26570896   seq the DmdEnv in seqDmdType as well
645
          # 2014-10-13    18582472   different machines giving different results..
646
          # 2014-10-13    22220552   use the mean
647
          # 2015-06-21    28056344   switch to `+RTS -G1`, tighten bound to 15%
648
          # 2015-10-28    23776640   emit Typeable at definition site
649
          # 2015-12-11    30837312   TypeInType (see #11196)
650
          # 2016-04-14    38776008   Final demand analyzer run
651 652 653
           (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)
654
          ]),
655
       compiler_stats_num_field('peak_megabytes_allocated', # Note [residency]
656
          [(wordsize(64), 144, 15),
657
          # 2014-10-13    66
658
          # 2014-10-13    58         seq the DmdEnv in seqDmdType as well
659
          # 2014-10-13    49         different machines giving different results...
660
          # 2014-10-13    53         use the mean
661 662
          # 2015-06-15    44         reduced for some reason
          # 2015-06-21    105        switch to `+RTS -G1`
663
          # 2015-12-04    88         new pattern checker (D1535)
664
          # 2015-12-11    113        TypeInType (see #11196)
665
          # 2016-04-14    144        Final demand analyzer run
666
            (wordsize(32), 56, 15)
667
          # 2015-07-11    56         (x86/Linux, 64-bit machine) use +RTS -G1
668 669
          ]),
       compiler_stats_num_field('bytes allocated',
670
          [(wordsize(64), 608284152, 10)
671
          # 2014-10-13    544489040
672
          # 2015-10-28    608284152  emit Typeable at definition site
673
          ,(wordsize(32), 279480696, 10)
674
          # 2015-07-11    279480696  (x86/Linux, 64-bit machine) use +RTS -G1
675
          ]),
676 677

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
678
       extra_hc_opts('+RTS -G1 -RTS')
679 680 681
      ],
     compile,
     [''])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
682 683 684 685

test('T9872a',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
Joachim Breitner's avatar
Joachim Breitner committed
686
          [(wordsize(64), 3352882080, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
687
          # 2014-12-10    5521332656    Initally created
688
          # 2014-12-16    5848657456    Flattener parameterized over roles
689
          # 2014-12-18    2680733672    Reduce type families even more eagerly
690
          # 2015-12-11    3581500440    TypeInType (see #11196)
Joachim Breitner's avatar
Joachim Breitner committed
691
          # 2016-04-07    3352882080    CSE improvements
692 693 694
           (wordsize(32), 1740903516, 5)
          # was           1325592896
          # 2016-04-06    1740903516    x86/Linux
Simon Peyton Jones's avatar
Simon Peyton Jones committed
695 696 697 698 699 700 701 702
          ]),
      ],
     compile_fail,
     [''])

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

test('T9961',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
757
          [(wordsize(64), 568526784, 5),
758
          # 2015-01-12    807117816   Initally created
759 760
          # 2015-spring   772510192   Got better
          # 2015-05-22    663978160   Fix for #10370 improves it more
761 762
          # 2015-10-28    708680480   x86_64/Linux   Emit Typeable at definition site
          # 2015-12-17    745044392   x86_64/Darwin  Creep upwards