all.T 61.5 KB
Newer Older
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
     [# expect_broken(12437),
32
      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), 78, 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
55
             # 2016-10-20 68, (amd64/Linux) allow top-level string literals
             #                See the comment 16 on #8472.
Ben Gamari's avatar
Ben Gamari committed
56
             # 2017-02-17 83  (amd64/Linux) Type-indexed Typeable
57
             # 2017-03-31 61  (amd64/Linux) Fix memory leak in simplifier
58
             # 2018-01-25 78  (amd64/Linux) Use CoreExpr for EvTerm
59
      compiler_stats_num_field('max_bytes_used',
60
          [(platform('i386-unknown-mingw32'), 5719436, 20),
61
62
                                 # 2010-05-17 5717704 (x86/Windows)
                                 # 2013-02-10 5159748 (x86/Windows)
63
                                 # 2013-02-10 5030080 (x86/Windows)
64
                                 # 2013-11-13 7295012 (x86/Windows, 64bit machine)
65
                                 # 2014-04-24 5719436 (x86/Windows, 64bit machine)
66
           (wordsize(32), 9418680, 1),
67
68
             #            6707308 (x86/OS X)
             # 2009-12-31 6149572 (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
69
             # 2014-01-22 6429864 (x86/Linux)
70
             # 2014-06-29 5949188 (x86/Linux)
71
72
             # 2015-07-11 6241108 (x86/Linux, 64-bit machine) use +RTS -G1
             # 2016-04-06 9093608 (x86/Linux, 64-bit machine)
73
             # 2017-03-24 9261052 (x86/Linux, 64-bit machine)
74
             # 2017-04-06 9418680 (x86/Linux, 64-bit machine)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
75

76
           (wordsize(64), 22311600, 15)]),
Joachim Breitner's avatar
Joachim Breitner committed
77
             # 2014-09-10 10463640, 10  # post-AMP-update (somewhat stabelish)
Austin Seipp's avatar
Austin Seipp committed
78
               # looks like the peak is around ~10M, but we're
79
80
81
               # 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
82
               # See Note [residency] to get an accurate view.
83
84
             # 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
85
             # 2015-07-11 11670120 (amd64/Linux)
86
             # 2015-10-28 15017528 (amd64/Linux) emit typeable at definition site
Ben Gamari's avatar
Ben Gamari committed
87
             # 2016-10-12 17285216 (amd64/Linux) it's not entirely clear why
lukemaurer's avatar
lukemaurer committed
88
             # 2017-02-01 19924328 (amd64/Linux) Join points (#12988)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
89
             # 2017-02-14 16393848 Early inline patch
90
             # 2017-03-31 16679176 Fix memory leak in simplifier
David Feuer's avatar
David Feuer committed
91
             # 2017-08-25 19199872 Refactor the Mighty Simplifier
92
             # 2018-02-19 22311600 (amd64/Linux) Unknown
Simon Peyton Jones's avatar
Simon Peyton Jones committed
93

94
      compiler_stats_num_field('bytes allocated',
95
          [(platform('i386-unknown-mingw32'), 301784492, 5),
96
97
                                 #            215582916 (x86/Windows)
                                 # 2012-10-29 298921816 (x86/Windows)
98
                                 # 2013-02-10 310633884 (x86/Windows)
99
                                 # 2013-11-13 317975916 (x86/Windows, 64bit machine)
100
                                 # 2014-04-04 301784492 (x86/Windows, 64bit machine)
101
           (wordsize(32), 324586096, 1),
102
103
104
105
             #            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
106
             # 2014-01-22 316103268 (x86/Linux)
107
             # 2014-06-29 303300692 (x86/Linux)
108
             # 2015-07-11 288699104 (x86/Linux, 64-bit machine) use +RTS -G1
109
             # 2016-04-06 344730660 (x86/Linux, 64-bit machine)
110
             # 2017-03-24 324586096 (x86/Linux, 64-bit machine)
111
           (wordsize(64), 659863176, 5)]),
Ben Gamari's avatar
Ben Gamari committed
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
             # 2009-11-17 434845560 (amd64/Linux)
             # 2009-12-08 459776680 (amd64/Linux)
             # 2010-05-17 519377728 (amd64/Linux)
             # 2011-08-05 561382568 (amd64/OS X)
             # 2012-07-16 589168872 (amd64/Linux)
             # 2012-07-20 595936240 (amd64/Linux)
             # 2012-08-23 606230880 (amd64/Linux)
             # 2012-08-29 633334184 (amd64/Linux) new codegen
             # 2012-09-18 641959976 (amd64/Linux)
             # 2012-10-19 661832592 (amd64/Linux) -fPIC turned on
             # 2012-10-23 642594312 (amd64/Linux) -fPIC turned off again
             # 2012-11-12 658786936 (amd64/Linux) UNKNOWN REASON
             # 2013-91-17 667160192 (x86_64/Linux) new demand analyser
             # 2013-10-18 698612512 (x86_64/Linux) fix for #8456
             # 2014-02-10 660922376 (x86_64/Linux) call arity analysis
             # 2014-07-17 651626680 (x86_64/Linux) roundabout update
             # 2014-09-10 630299456 (x86_64/Linux) post-AMP-cleanup
             # 2015-06-03 581460896 (x86_64/Linux) use +RTS -G1
             # 2015-10-28 695430728 (x86_64/Linux) emit Typeable at definition site
             # 2015-10-28 756138176 (x86_64/Linux) inst-decl defaults go via typechecker (#12220)
             # 2017-02-17 831733376 (x86_64/Linux) Type-indexed Typeable
Simon Peyton Jones's avatar
Simon Peyton Jones committed
133
             # 2017-02-25 695354904 (x86_64/Linux) Early inlining patch
134
             # 2017-04-21 659863176 (x86_64/Linux) Unknown
135
      only_ways(['normal']),
136

137
      extra_hc_opts('-dcore-lint -static'),
138
139
          # Leave -dcore-lint on for this one test, so that we have something
          # that will catch a regression in -dcore-lint performance.
140
141

      # Use `+RTS -G1` for more stable residency measurements. Note [residency].
142
      extra_hc_opts('+RTS -G1 -RTS')
Simon Marlow's avatar
Simon Marlow committed
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
      ],
     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',
160
     [
Simon Marlow's avatar
Simon Marlow committed
161
      compiler_stats_num_field('max_bytes_used', # Note [residency]
162
          [(wordsize(32), 28686588, 15),
163
164
165
166
             #            17725476 (x86/OS X)
             #            14593500 (Windows)
             # 2013-02-10 20651576 (x86/Windows)
             # 2013-02-10 20772984 (x86/OSX)
167
             # 2013-11-13 24009436 (x86/Windows, 64bit machine)
168
             # 2014-04-24 19882188 (x86/Windows, 64bit machine)
169
             # 2014-12-22 26525384 (x86/Windows) Increase due to silent superclasses?
170
             # 2015-07-11 43196344 (x86/Linux, 64-bit machine) use +RTS -G1
171
             # 2016-04-06 28686588 (x86/Linux, 64-bit machine)
172

173
           (wordsize(64), 34050960, 20)]),
174
175
176
177
178
179
180
181
182
             # 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)
183
184
             # 2014-07-14:     36670800  (amd64/Linux)
             #  (reason unknown, setting expected value somewhere in between)
185
186
             # 2015-01-22:     45000000  (amd64/Linux)
             #  varies between 40959592 and 52914488... increasing to +-20%
187
188
             # 2015-10-28:     50367248  (amd64/Linux)
             #  D757: emit Typeable instances at site of type definition
189
190
             # 2016-07-11:     54609256  (Windows) before fix for #12227
             # 2016-07-11:     52992688  (Windows) after fix for #12227
Ben Gamari's avatar
Ben Gamari committed
191
             # 2017-02-17:     63131248  (amd64/Linux) Type indexed Typeable
192
             # 2017-05-14:     34050960  (amd64/Linux) Two-pass CmmLayoutStack
193

194
      compiler_stats_num_field('bytes allocated',
195
          [(wordsize(32), 1377050640, 5),
196
197
198
           # previous:     815479800  (x86/Linux)
           # (^ increase due to new codegen, see #7198)
           # 2012-10-08:  1373514844 (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
199
200
           # 2013-11-13: 1478325844  (x86/Windows, 64bit machine)
           # 2014-01-12: 1565185140  (x86/Linux)
201
           # 2013-04-04: 1377050640  (x86/Windows, 64bit machine)
Tobias Dammers's avatar
Tobias Dammers committed
202
           (wordsize(64), 1858491504, 5)]),
203
204
205
206
            # old:        1357587088 (amd64/Linux)
            # 29/08/2012: 2961778696 (amd64/Linux)
            # (^ increase due to new codegen, see #7198)
            # 18/09/2012: 2717327208 (amd64/Linux)
207
208
209
            # 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)
210
            # 12/03/2014: 2705289664 (amd64/Linux) (more call arity improvements)
211
            # 2014-17-07: 2671595512 (amd64/Linux) (round-about update)
Joachim Breitner's avatar
Joachim Breitner committed
212
            # 2014-09-10: 2709595808 (amd64/Linux) post-AMP cleanup
213
214
            # 2016-07-11: 2664479936 (Windows) before fix for #12227
            # 2016-07-11: 2739731144 (Windows) after fix for #12227 (ignoring)
215
            # 2017-02-17: 2758641264 (amd64/Linux) (Type indexed Typeable)
216
            # 2017-05-14: 2253557280 (amd64/Linux) Two-pass CmmLayoutStack
Tobias Dammers's avatar
Tobias Dammers committed
217
            # 2017-10-24: 1858491504 (amd64/Linux) Improved linear regAlloc
218
219
220
      conf_3294,

      # Use `+RTS -G1` for more stable residency measurements. Note [residency].
221
      extra_hc_opts('+RTS -G1 -RTS')
Simon Marlow's avatar
Simon Marlow committed
222
223
224
      ],
     compile,
     [''])
Ian Lynagh's avatar
Ian Lynagh committed
225

simonpj's avatar
simonpj committed
226
test('T4801',
227
228
     [ # expect_broken(5224),
       # temporarily unbroken (#5227)
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
###################################
# 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
247

248
      compiler_stats_num_field('bytes allocated',
249
          [(platform('x86_64-apple-darwin'), 417302064, 10),
250
251
           # prev:       510938976 (amd64/OS X):
           # 2015-12-11: 465653312 (amd64/OS X) Update, bump tolerance to +/-10%
252
           # 2017-03-24: 417302064 (amd64/OS X) Correlated with Linux improvement
Simon Marlow's avatar
Simon Marlow committed
253

254
           (wordsize(32), 199856388, 10),
Austin Seipp's avatar
Austin Seipp committed
255
256
           # prev:        185669232 (x86/OSX)
           # 2014-01-22:  211198056 (x86/Linux)
257
           # 2014-09-03:  185242032 (Windows laptop)
258
           # 2014-12-01:  203962148 (Windows laptop)
259
           # 2016-04-06:  239556572 (x86/Linux)
260
           # 2017-03-24:  199856388 (x86/Linux)
261
           (wordsize(64), 388898280, 10)]),
262
263
264
            # 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
265
            # 2014-04-08: 362939272 (amd64/Linux) cumulation of various smaller improvements over recent commits
Joachim Breitner's avatar
Joachim Breitner committed
266
            # 2014-10-08: 382056344 (amd64/Linux) stricter foldr2 488e95b
267
            # 2015-10-28: 434278248 (amd64/Linux) emit Typeable at definition site
268
            # 2016-10-19: 388898280 (amd64/Linux) Refactor traceRn interface (#12617)
Simon Marlow's avatar
Simon Marlow committed
269

270
###################################
271
# deactivated for now, as this metric became too volatile recently
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
#
#     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)
294
       only_ways(['normal']),
295
296
297
       extra_hc_opts('-static'),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
298
       extra_hc_opts('+RTS -G1 -RTS')
299
       ],
simonpj's avatar
simonpj committed
300
301
302
     compile,
     [''])

Ian Lynagh's avatar
Ian Lynagh committed
303
test('T3064',
304
     [compiler_stats_num_field('peak_megabytes_allocated',# Note [residency]
305
          [(wordsize(32), 36, 20),
306
307
            # expected value: 14 (x86/Linux 28-06-2012):
            # 2013-11-13:     18 (x86/Windows, 64bit machine)
Austin Seipp's avatar
Austin Seipp committed
308
            # 2014-01-22:     23 (x86/Linux)
309
            # 2014-12-22:     23 (x86/Linux) death to silent superclasses
310
            # 2015-07-11:     28 (x86/Linux, 64-bit machine) use +RTS -G1
311
            # 2017-04-06:     36 (x86/Linux, 64-bit machine) it's unclear
312

313
           (wordsize(64), 66, 20)]),
314
315
            # (amd64/Linux):            18
            # (amd64/Linux) 2012-02-07: 26
316
            # (amd64/Linux) 2013-02-12: 23; increased range to 10%
317
            # (amd64/Linux) 2013-04-03: 26
Austin Seipp's avatar
Austin Seipp committed
318
            # (amd64/Linux) 2013-09-11: 30; result of AMP patch
319
            # Increased range to 20%.  peak-usage varies from 22 to 26,
320
            #  depending on whether the old .hi file exists
321
            # (amd64/Linux) 2013-09-11: 37; better arity analysis (weird)
322
            # (amd64/Linux) (09/09/2014): 42, AMP changes (larger interfaces, more loading)
323
            # (amd64/Linux) 2014-10-13: 38: Stricter seqDmdType
324
            # (amd64/Linux) 2014-12-22: 27: death to silent superclasses
325
            # (amd64/Linux) 2015-01-22: 32: Varies from 30 to 34, at least here.
326
            # (amd64/Linux) 2015-06-03: 54: use +RTS -G1
327
            # (amd64/Linux) 2016-10-25: 66: Presumably creep
328

329
      compiler_stats_num_field('bytes allocated',
330
          [(wordsize(32), 134044092, 10),
331
            # 2011-06-28: 56380288  (x86/Linux)
Austin Seipp's avatar
Austin Seipp committed
332
            # 2012-10-30: 111189536 (x86/Windows)
333
            # 2013-11-13: 146626504 (x86/Windows, 64bit machine)
Austin Seipp's avatar
Austin Seipp committed
334
            # 2014-01-22: 162457940 (x86/Linux)
335
            # 2014-12-01: 162457940 (Windows)
336
            # 2014-12-22: 122836340 (Windows) Death to silent superclasses
337
            # 2016-04-06: 153261024 (x86/Linux) probably wildcard refactor
338
            # 2017-03-24: 134044092 (x86/Linux, 64-bit machine) Update
339

340
           (wordsize(64), 258505536, 5)]),
341
342
343
344
345
346
347
348
            # (amd64/Linux) (2011-06-28):  73259544
            # (amd64/Linux) (2013-02-07): 224798696
            # (amd64/Linux) (2013-08-02): 236404384, increase from roles
            # (amd64/Linux) (2013-09-11): 290165632, increase from AMP warnings
            # (amd64/Linux) (2013-11-22): 308300448, GND via Coercible and counters for constraints solving
            # (amd64/Linux) (2013-12-02): 329795912, Coercible refactor
            # (amd64/Linux) (2014-02-11): 308422280, optimize Coercions in simpleOptExpr
            # (amd64/Linux) (2014-05-23): 324022680, unknown cause
349
            # (amd64/Linux) (2014-07-17): 332702112, general round of updates
350
            # (amd64/Linux) (2014-08-29): 313638592, w/w for INLINABLE things
351
352
353
354
355
            # (amd64/Linux) (2014-09-09): 407416464, AMP changes (larger interfaces, more loading)
            # (amd64/Linux) (2014-09-14): 385145080, BPP changes (more NoImplicitPrelude in base)
            # (amd64/Linux) (2014-12-10): 363103840, improvements in constraint solver
            # (Mac)         (2014-12-18): 350418600, improvements to flattener
            # (amd64/Linux) (2014-12-22): 243670824, Ha! Death to superclass constraints, makes
356
            #                                        much less code for Monad instances
357
            # (amd64/Linux) (2015-12-01): 264952256, Regression due to Simon's wildcard refactor
358
            #                                        Tracked as #11151.
359
            # (amd64/Linux) (2015-12-11): 304344936, Regression due to TypeInType
360
            #                                        Tracked as #11196
361
            # (amd64/Linux) (2016-04-15): 287460128  Improvement due to using coercionKind instead
362
            #                                        of zonkTcType (Trac #11882)
363
            # (amd64/Darwin) (2017-01-23): 306222424 Presumably creep from recent changes (Typeable?)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
364
            # (amd64/Linux) (2017-02-14): 259815560  Early inline patch: 9% improvement
365
            # (amd64/Linux) (2017-03-31): 265950920  Fix memory leak in simplifier
366
            # (amd64/Linux) (2017-05-01): 281509496  Avoid excessive space usage from unfoldings in CoreTidy
367
            # (amd64/Linux) (2017-05-01): 258505536  I think this is improvement in coercionKind e4ab65bd
368

369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
###################################
# 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
393

394
395
396
       only_ways(['normal']),

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
397
       extra_hc_opts('+RTS -G1 -RTS')
Ian Lynagh's avatar
Ian Lynagh committed
398
399
400
401
      ],
     compile,
     [''])

Ian Lynagh's avatar
Ian Lynagh committed
402
403
404
405
406
test('T4007',
     normal,
     run_command,
     ['$MAKE -s --no-print-directory T4007'])

407
test('T5030',
408
     [compiler_stats_num_field('bytes allocated',
409
          [(wordsize(32), 345668088, 10),
410
411
           # previous:    196457520
           # 2012-10-08:  259547660 (x86/Linux, new codegen)
412
           # 2013-11-21:  198573456 (x86 Windows, 64 bit machine)
413
           # 2014-12-10:  227205560 constraint solver got worse again; more aggressive solving
414
           #                        of family-applications leads to less sharing, I think
415
           # 2015-07-11:  201882912 reason unknown
416
           # 2016-04-06:  345668088 likely TypeInType
417

418
           (wordsize(64), 794426536, 10)]),
419
420
421
             # Previously 530000000 (+/- 10%)
             # 17/1/13:   602993184  (x86_64/Linux)
             #            (new demand analyser)
422
423
             # 2013-06-08 538467496  (x86_64/Linux)
             # ^ reason unknown
eir@cis.upenn.edu's avatar
eir@cis.upenn.edu committed
424
425
             # 2013-08-02 454498592  (amd64/Linux)
             # decrease from more aggressive coercion optimisations from roles
426
427
             # 2013-11-12 397672152  (amd64/Linux)
             # big decrease following better CSE and arity
428
429
             # 2014-07-17 409314320  (amd64/Linux)
             # general round of updates
Joachim Breitner's avatar
Joachim Breitner committed
430
             # 2014-09-10 385152728  post-AMP-cleanup
431
             # 2014-12-08 340969128  constraint solver perf improvements (esp kick-out)
432
             # 2014-12-10 449042120  constraint solver got worse again; more aggressive solving
433
             #                          of family-applications leads to less sharing, I think
434
             # 2015-03-17 403932600  tweak to solver algorithm
435
             # 2015-12-11 653710960  TypeInType (see #11196)
436
437
438
             # 2016-10-17 794426536  20% big increase following
             #                       31621b12 * A collection of type-inference refactorings.
             #                       See ticket for more info
439

440
441
442
       only_ways(['normal'])
      ],
     compile,
443
     ['-freduction-depth=300'])
444

Simon Peyton Jones's avatar
Simon Peyton Jones committed
445
test('T5631',
446
     [compiler_stats_num_field('bytes allocated',
447
          [(wordsize(32), 570137436, 10),
448
        # expected value: 392904228 (x86/Linux)
449
        # 2014-04-04:     346389856 (x86 Windows, 64 bit machine)
450
        # 2014-12-01:     390199244 (Windows laptop)
451
        # 2016-04-06:     570137436 (amd64/Linux) many reasons
452
           (wordsize(64), 1164944688, 5)]),
453
        # expected value: 774595008 (amd64/Linux):
454
        # expected value: 735486328 (amd64/Linux) 2012/12/12:
455
        # expected value: 690742040 (amd64/Linux) Call Arity improvements
456
        # 2014-09-09:     739704712 (amd64/Linux) AMP changes
457
        # 2014-11-04:     776121120 (amd64/Linux) new-flatten-skolems
458
        # 2015-06-01:     812288344 (amd64/Linux) unknown cause
459
460
461
        # 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
462
        # 2016-10-19:     1024926024 (amd64/Linux) Refactor traceRn interface (#12617)
463
        # 2016-11-10:     1077429456 (amd64/Linux) Stop -dno-debug-output suppressing -ddump-tc-trace
Ben Gamari's avatar
Ben Gamari committed
464
        # 2017-02-17:     1517484488 (amd64/Linux) Type-indexed Typeable
Ben Gamari's avatar
Ben Gamari committed
465
        # 2017-03-03:     1065147968 (amd64/Linux) Share Typeable KindReps
466
        # 2017-03-31:     1037482512 (amd64/Linux) Fix memory leak in simplifier
467
468
469
	    # 2017-07-27:     1106015512 (Mac) Regresssion from tracking visibility in
	    #                            TypeEqOrigin should be fixed by #14037
        # 2018-05-05:     1164944688 (amd64/Linux) Simplify callSiteInline a little
Simon Peyton Jones's avatar
Simon Peyton Jones committed
470
471
472
473
474
       only_ways(['normal'])
      ],
     compile,
     [''])

475
test('parsing001',
476
     [compiler_stats_num_field('bytes allocated',
477
478
479
          [(wordsize(32), 232777056, 10),
        # Initial:        274000576
        # 2017-03-24:     232777056
480
           (wordsize(64), 519401296, 5)]),
481
        # expected value: 587079016 (amd64/Linux)
482
        # 2016-09-01:     581551384 (amd64/Linux) Restore w/w limit (#11565)
lukemaurer's avatar
lukemaurer committed
483
        # 2016-12-19:     493730288 (amd64/Linux) Join points (#12988)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
484
        # 2017-02-14:     463931280 Early inlining patch; acutal improvement 7%
485
        # 2017-12-11:     490228304 BlockArguments
486
        # 2018-04-09:     519401296 Inexplicable, collateral of #14737
487
488
489
490
491
       only_ways(['normal']),
      ],
     compile_fail, [''])


492
493
494
test('T783',
     [ only_ways(['normal']),  # no optimisation for this one
      # expected value: 175,569,928 (x86/Linux)
495
      compiler_stats_num_field('bytes allocated',
496
          [(wordsize(32), 225911912, 5),
497
            # 2012-10-08: 226907420 (x86/Linux)
498
499
            # 2013-02-10: 329202116 (x86/Windows)
            # 2013-02-10: 338465200 (x86/OSX)
500
            # 2014-04-04: 319179104 (x86 Windows, 64 bit machine)
501
502
            # 2014-09-03: 223377364 (Windows) better specialisation, raft of core-to-core optimisations
            # 2014-12-22: 235002220 (Windows) not sure why
503
            # 2016-04-06: 249332816 (x86/Linux, 64-bit machine)
504
            # 2017-03-24: 225911912 (x86/Linux, 64-bit machine)
505

Ben Gamari's avatar
Ben Gamari committed
506
           (wordsize(64), 481875416, 10)]),
507
508
509
510
511
512
            # 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)
513
514
            # 18/10/2013: 734038080 (amd64/Linux)
            #   (fix for #8456)
515
516
            # 24/10/2013: 654804144 (amd64/Linux)
            #   (fix previous fix for #8456)
517
518
            # 2014-07-17: 640031840 (amd64/Linux)
            #   (general round of updates)
519
            # 2014-08-29: 441932632 (amd64/Linux)
520
            #   (better specialisation, raft of core-to-core optimisations)
521
522
523
524
525
526
527
528
529
530
            # 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
531
532
            # 2015-12-04: 1134085384 (amd64/Linux)
            #    (D1535: Major overhaul of pattern match checker, #11162)
533
534
            # 2016-02-03: 488592288 (amd64/Linux)
            #    (D1795: Another overhaul of pattern match checker, #11374)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
535
            # 2017-02-14    436978192    Early inlining: 5% improvement
Ben Gamari's avatar
Ben Gamari committed
536
            # 2017-09-08    481875416    Unknown
Simon Peyton Jones's avatar
Simon Peyton Jones committed
537

538
      extra_hc_opts('-static')
539
540
      ],
      compile,[''])
541
542
543

test('T5321Fun',
     [ only_ways(['normal']),  # no optimisation for this one
544
       compiler_stats_num_field('bytes allocated',
545
           [(wordsize(32), 244387620, 10),
546
547
548
             # prev:       300000000
             # 2012-10-08: 344416344 x86/Linux
             #  (increase due to new codegen)
549
             # 2014-09-03: 299656164     (specialisation and inlining)
550
             # 2014-12-10: 206406188     #  Improvements in constraint solver
551
             # 2016-04-06: 279922360 x86/Linux
552
553
             # 2017-03-24: 244387620 x86/Linux (64-bit machine)

554
555
556
            (platform('x86_64-apple-darwin'), 446893600, 5),
             # 2018-03-17: 423774560     #  OS X-only (reason unknown, see #11753)

557
            (wordsize(64), 423774560, 5)])
558
             # prev:       585521080
559
560
561
562
563
564
565
566
567
             # 2012-08-29: 713385808     #  (increase due to new codegen)
             # 2013-05-15: 628341952     #  (reason for decrease unknown)
             # 2013-06-24: 694019152     #  (reason for re-increase unknown)
             # 2014-05-12: 614409344     #  (specialisation and inlining changes)
             # 2014-09-10: 601629032     #  post-AMP-cleanup
             # 2014-11-06: 541287000     #  Simon's flat-skol changes to the constraint solver
             # 2014-12-10: 408110888     #  Improvements in constraint solver
             # 2014-12-16: 429921312     #  Flattener parameterized over roles
             # 2015-08-10: 509921312
568
569
             #  (undefined now takes an implicit parameter and GHC -O0 does
             #  not recognize that the application is bottom)
570
571
             # 2015-12-11: 565883176     #  TypeInType (see #11196)
             # 2017-01-06: 497356688     #  Small coercion optimisations
572
573
                                         #  The actual decrease was only 2%; earlier
                                         #    commits had drifted down
574
             # 2017-01-22: 525895608     #  Allow top-level string literals in Core. I'm not
575
576
577
578
579
                                         #    convinced that this patch is
                                         #    responsible for all of this
                                         #    change, however. Namely I am
                                         #    quite skeptical of the downward
                                         #    "drift" reported above
580
581
             # 2017-01-31: 498135752     #  Join points (#12988)
             # 2017-02-23: 524706256     #  Type-indexed Typeable? (on Darwin)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
582
             # 2017-02-25: 488295304     #  Early inlining patch
583
             # 2017-05-14: 449577856     #  (amd64/Linxu) Two-pass CmmLayoutStack
584
             # 2017-12-13: 423774560     #  (amd64/Linxu) Typechecker improvements
585
586
587
588
589
      ],
      compile,[''])

test('T5321FD',
     [ only_ways(['normal']),  # no optimisation for this one
590
      compiler_stats_num_field('bytes allocated',
591
          [(wordsize(32), 250757460, 10),
592
593
594
            # prev:       213380256
            # 2012-10-08: 240302920 (x86/Linux)
            #  (increase due to new codegen)
595
596
            # 2014-07-31: 211699816 (Windows) (-11%)
            #  (due to better optCoercion, 5e7406d9, #9233)
597
            # 2016-04-06: 250757460 (x86/Linux)
598

599
           (wordsize(64), 415136648, 10)])
600
601
602
            # prev:       418306336
            # 29/08/2012: 492905640
            #  (increase due to new codegen)
603
            # 15/05/2013: 406039584
604
            #  (reason for decrease unknown)
605
            # 08/06/2013: 476497048
606
            #  (reason for increase unknown)
607
608
609
610
            # 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)
611
612
            # 2014-10-08  410895536
            #  (various changes; biggest improvements due to 949ad67 and FastString package ids)
613
614
615
            # 2015-08-10: 470895536
            #  (undefined now takes an implicit parameter and GHC -O0 does
            #  not recognize that the application is bottom)
616
617
            # 2015-10-28: 532365376
            #  D757: emit Typeable instances at site of type definition
618
619
            # 2016-07-16: 477840432
            #  Optimize handling of built-in OccNames
620
            # 2017-05-14: 415136648 (amd64/Linux) Two-pass CmmLayoutStack
621
622
      ],
      compile,[''])
Ian Lynagh's avatar
Ian Lynagh committed
623
624
625

test('T5642',
     [ only_ways(['normal']),
Ben Gamari's avatar
Ben Gamari committed
626
       normal,
627
       compiler_stats_num_field('bytes allocated',
628
           [(wordsize(32), 413517560, 10),
629
                     # sample from x86/Linux
Gabor Greif's avatar
Typos    
Gabor Greif committed
630
            # prev:        650000000
631
            # 2014-09-03:  753045568
632
            # 2014-12-10:  641085256 Improvements in constraints solver
633
            # 2016-04-06:  462677300
634
            # 2017-03-24:  413517560 (x86/Linux, 64-bit machine)
635

636
            (wordsize(64),  838316496, 10)])
637
638
            # prev:        1300000000
            # 2014-07-17:  1358833928 (general round of updates)
639
            # 2014-08-07:  1402242360 (caused by 1fc60ea)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
640
# Watch out for:
Joachim Breitner's avatar
Joachim Breitner committed
641
642
643
644
645
            # 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
646
            # 2014-12-10:  1282916024 Improvements in constraints solver
647
            # 2015-10-28:  1412808976 Emit Typeable at definition site
648
            # 2015-11-22:  1071915072 Use TypeLits in the metadata encoding
649
            # 2016-02-08:   950004816 Pattern match checker re-rework
Ryan Scott's avatar
Ryan Scott committed
650
            # 2016-05-12:  1300685592 Make Generic1 poly-kinded
651
            # 2016-06-05:   916484672 Refactor derived Generic instances to reduce allocations
652
            # 2016-09-03:   838316496 Derive the Generic instance in perf/compiler/T5642
Ian Lynagh's avatar
Ian Lynagh committed
653
654
      ],
      compile,['-O'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
655
656
657

test('T5837',
     [ only_ways(['normal']),
658
      compiler_stats_num_field('bytes allocated',
659
          [(wordsize(32), 27028956, 10),
660
             # 40000000 (x86/Linux)
661
662
             # 2013-11-13:  45520936 (x86/Windows, 64bit machine)
             # 2014-09-03:  37096484 (Windows laptop, w/w for INLINABLE things
663
             # 2014-12-01: 135914136 (Windows laptop, regression see below)
664
665
             # 2014-12-08: 115905208  Constraint solver perf improvements (esp kick-out)
             # 2016-04-06: 24199320  (x86/Linux, 64-bit machine) TypeInType
666
             # 2017-03-24: 27028956  (x86/Linux, 64-bit machine)
667

668
           (platform('x86_64-unknown-mingw32'), 54793816, 7),
669
670
             # 2017-02-19                       59161648 (x64/Windows) - Unknown
             # 2017-04-21                       54985248 (x64/Windows) - Unknown
671
             # 2017-12-24                       54793816 (x64/Windows) - Unknown
672

Ben Gamari's avatar
Ben Gamari committed
673
           (wordsize(64), 55813608, 7)])
674
             # sample: 3926235424 (amd64/Linux, 15/2/2012)
675
676
             # 2012-10-02 81879216
             # 2012-09-20 87254264 amd64/Linux
677
             # 2013-09-18 90587232 amd64/Linux
Austin Seipp's avatar
Austin Seipp committed
678
679
             # 2013-11-21 86795752 amd64/Linux, GND via Coercible and counters
             #                                  for constraints solving
680
681
             # 2014-08-29 73639840 amd64/Linux, w/w for INLINABLE things
             # 2014-10-08 73639840 amd64/Linux, Burning Bridges and other small changes
682
             # 2014-11-06 271028976       Linux, Accept big regression;
683
             #   See Note [An alternative story for the inert substitution] in TcFlatten
684
             # 2014-12-08 234790312 Constraint solver perf improvements (esp kick-out)
685
686
             # 2014-12-16 231155640 Mac  Flattener parameterized over roles;
             #                           some optimization
687
             # 2015-03-17 53424304  Mac  Better depth checking; fails earlier
688
             # 2015-06-09 38834096  Better "improvement"; I'm not sure whey it improves things
689
690
691
             # 2015-12-11 43877520  amd64/Linux, TypeInType (see #11196)
             # 2016-03-18 48507272  Mac, accept small regression in exchange
             #                           for other optimisations
Richard Eisenberg's avatar
Richard Eisenberg committed
692
             # 2016-09-15 42445672  Linux; fixing #12422
693
             # 2016-09-25 41832056  amd64/Linux, Rework handling of names (D2469)
694
695
696
             # 2016-10-25 52597024  amd64/Linux, the test now passes (hooray), and so
             #                          allocates more because it goes right down the
             #                          compilation pipeline
697
698
             # 2017-01-24 57861352  amd64/Linux, very likely due to the top-level strings
             #                          in Core patch.
699
700
701
702
             # 2017-02-07 50253880  Another improvement in SetLevels.  I don't think
             #                      all the gain here is from this patch, but I think it
             #                      just pushed it over the edge, so I'm re-centreing, and
             #                      changing to 5% tolerance
703
704
705
             # 2017-02-07 53592736  amd64/Linux Simon's earlier decrease appears
             #                      to be environmentally-dependent.
             #                      Also bumped acceptance threshold to 7%.
706
             # 2017-02-20 58648600  amd64/Linux Type-indexed Typeable
707
             # 2017-02-28 54151864  amd64/Linux Likely drift due to recent simplifier improvements
Simon Peyton Jones's avatar
Simon Peyton Jones committed
708
             # 2017-02-25 52625920  amd64/Linux Early inlining patch
Moritz Angermann's avatar
Moritz Angermann committed
709
             # 2017-09-06 56782344  amd64/Linux Drift manifest in unrelated LLVM patch
710
             # 2017-10-24 52089424  amd64/linux Fix space leak in BinIface.getSymbolTable
711
             # 2018-02-19 55813608  amd64/Linux Unknown
Simon Peyton Jones's avatar
Simon Peyton Jones committed
712
      ],
713
      compile, ['-freduction-depth=50'])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
714
715
716

test('T6048',
     [ only_ways(['optasm']),
717
      compiler_stats_num_field('bytes allocated',
718
          [(wordsize(32), 55701280, 10),
719
720
            # prev:       38000000 (x86/Linux)
            # 2012-10-08: 48887164 (x86/Linux)
721
            # 2014-04-04: 62618072 (x86 Windows, 64 bit machine)
722
            # 2014-09-03: 56315812 (x86 Windows, w/w for INLINABLE)
723
            # 2014-12-01: 49987836 (x86 Windows)
724
            # 2016-04-06: 55701280 (x86/Linux, 64-bit machine)
725

Simon Peyton Jones's avatar
Simon Peyton Jones committed
726
           (wordsize(64), 90996312, 10)])
Ben Gamari's avatar
Ben Gamari committed
727
728
729
730
731
732
733
734
735
736
737
738
             # 2012-09-18  97247032 amd64/Linux
             # 2014-01-16 108578664 amd64/Linux (unknown, likely foldl-via-foldr)
             # 2014-01-18  95960720 amd64/Linux Call Arity improvements
             # 2014-02-28 105556793 amd64/Linux (unknown, tweak in base/4d9e7c9e3 resulted in change)
             # 2014-03-05 110646312 amd64/Linux Call Arity became more elaborate
             # 2014-07-14 125431448 amd64/Linux unknown reason. Even worse in GHC-7.8.3. *shurg*
             # 2014-08-29 108354472 amd64/Linux w/w for INLINABLE things
             # 2014-09-14  88186056 amd64/Linux BPP part1 change (more NoImplicitPreludes in base)
             # 2014-01-08  95946688 amd64/Linux Mostly 4c834fd. Occasional spikes to 103822120!
             # 2016-03-11 108225624 amd64/Linux unknown reason sadly; likely gradual creep.
             # 2016-11-25  94327392 amd64/Linux Back down again hooray; still not sure why
             # 2017-02-17 115715592 amd64/Linux Type-indexed Typeable
Simon Peyton Jones's avatar
Simon Peyton Jones committed
739
             # 2017-04-28 90996312 Join point refactoring
Simon Peyton Jones's avatar
Simon Peyton Jones committed
740
741
      ],
      compile,[''])
742
743
744
745

test('T9020',
     [ only_ways(['optasm']),
      compiler_stats_num_field('bytes allocated',
746
          [(wordsize(32), 249904136, 10),
747
748
           # Original:    381360728
           # 2014-07-31:  343005716 (Windows) (general round of updates)
749
           # 2017-03-24:  249904136 (x86/Linux, 64-bit machine)
750

751
           (wordsize(64), 562206104, 10)])
752
753
           # prev:        795469104
           # 2014-07-17:  728263536 (general round of updates)
Joachim Breitner's avatar
Joachim Breitner committed
754
           # 2014-09-10:  785871680 post-AMP-cleanup
David Feuer's avatar
David Feuer committed
755
           # 2014-11-03:  680162056 Further Applicative and Monad adjustments
756
           # 2015-10-21:  786189008 Make stronglyConnCompFromEdgedVertices deterministic
757
           # 2016-01-26:  698401736 improvement from using ExpTypes instead of ReturnTvs
758
           # 2016-04-06:  852298336 Refactoring of CSE #11781
759
           # 2016-04-06:  698401736 Use thenIO in Applicative IO
760
           # 2017-02-03:  764866144 Join points
Simon Peyton Jones's avatar
Simon Peyton Jones committed
761
762
           # 2017-02-14:  500707080 Early inline patch; 35% decrease!
           #                        Program size collapses in first simplification
763
           # 2017-03-31:  493596312 Fix memory leak in simplifier
764
           # 2017-04-28:  423163832  Remove exponential behaviour in simplifier
765
           # 2018-04-09:  562206104 Inexplicable, collateral of #14737
766
767
      ],
      compile,[''])
768
769
770

test('T9675',
     [ only_ways(['optasm']),
771
       compiler_stats_num_field('max_bytes_used', # Note [residency]
772
          [(wordsize(64), 17675240, 15),
773
          # 2014-10-13    29596552
774
          # 2014-10-13    26570896   seq the DmdEnv in seqDmdType as well
775
          # 2014-10-13    18582472   different machines giving different results..
776
          # 2014-10-13    22220552   use the mean
777
          # 2015-06-21    28056344   switch to `+RTS -G1`, tighten bound to 15%
778
          # 2015-10-28    23776640   emit Typeable at definition site
779
          # 2015-12-11    30837312   TypeInType (see #11196)
780
781
          # 2016-03-14    38776008   Final demand analyzer run
          # 2016-04-01    29871032   Fix leaks in demand analysis
782
          # 2016-04-30    17675240   Fix leaks in tidy unfoldings
783
784
785
           (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)
786
          ]),
787
       compiler_stats_num_field('peak_megabytes_allocated', # Note [residency]
788
          [(wordsize(64), 63, 15),
789
          # 2014-10-13    66
790
          # 2014-10-13    58         seq the DmdEnv in seqDmdType as well
791
          # 2014-10-13    49         different machines giving different results...
792
          # 2014-10-13    53         use the mean
793
794
          # 2015-06-15    44         reduced for some reason
          # 2015-06-21    105        switch to `+RTS -G1`
795
          # 2015-12-04    88         new pattern checker (D1535)
796
          # 2015-12-11    113        TypeInType (see #11196)
797
          # 2016-04-14    144        Final demand analyzer run
Simon Marlow's avatar
Simon Marlow committed
798
          # 2016-07-26    121        Unboxed sums?
799
          # 2017-04-30    63         Fix leaks in tidy unfoldings
800
            (wordsize(32), 56, 15)
801
          # 2015-07-11    56         (x86/Linux, 64-bit machine) use +RTS -G1
802
803
          ]),
       compiler_stats_num_field('bytes allocated',
804
          [(wordsize(64), 656137960, 10)
805
          # 2014-10-13    544489040
806
          # 2015-10-28    608284152  emit Typeable at definition site
Ben Gamari's avatar
Ben Gamari committed
807
          # 2017-02-17    731171072  Type-indexed Typeable
808
809
          # 2017-03-13    656137960  Put join ceiling underneath lambdas?

810
          ,(wordsize(32), 322901484, 10)
811
          # 2015-07-11    279480696  (x86/Linux, 64-bit machine) use +RTS -G1
812
813
          # 2017-03-24    322901484  (x86/Linux, 64-bit machine)

814
          ]),
815
816

       # Use `+RTS -G1` for more stable residency measurements. Note [residency].
817
       extra_hc_opts('+RTS -G1 -RTS')
818
819
820
      ],
     compile,
     [''])
Simon Peyton Jones's avatar
Simon Peyton Jones committed
821
822
823
824

test('T9872a',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
825
          [(wordsize(64), 2729927408, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
826
          # 2014-12-10    5521332656    Initally created
827
          # 2014-12-16    5848657456    Flattener parameterized over roles
828
          # 2014-12-18    2680733672    Reduce type families even more eagerly
829
          # 2015-12-11    3581500440    TypeInType (see #11196)
Joachim Breitner's avatar
Joachim Breitner committed
830
          # 2016-04-07    3352882080    CSE improvements
831
          # 2016-10-19    3134866040    Refactor traceRn interface (#12617)
Ben Gamari's avatar
Ben Gamari committed
832
          # 2017-02-17    3298422648    Type-indexed Typeable
Simon Peyton Jones's avatar
Simon Peyton Jones committed
833
          # 2017-02-25    3005891848    Early inlining patch
834
          # 2018-03-26    2729927408    Flattener update with optimizations (#12919)
Simon Peyton Jones's avatar
Simon Peyton Jones committed
835

836
           (wordsize(32), 1493198244, 5)
837
838
          # was           1325592896
          # 2016-04-06    1740903516    x86/Linux
839
          # 2017-03-24    1493198244    x86/Linux, 64-bit machine
Simon Peyton Jones's avatar
Simon Peyton Jones committed
840
841
842
843
844
845
846
847
          ]),
      ],
     compile_fail,
     [''])

test('T9872b',
     [ only_ways(['normal']),
       compiler_stats_num_field('bytes allocated',
Simon Peyton Jones's avatar
Simon Peyton Jones committed
848
          [(wordsize(64), 3730686224, 5),
Simon Peyton Jones's avatar
Simon Peyton Jones committed
849
          # 2014