all.T 3.62 KB
Newer Older
1 2
# Test for #1227, #1418

3 4 5
test('heapprof002',
     [ pre_cmd('cp heapprof001.hs heapprof002.hs')
     , extra_clean(['heapprof002.hs'])
6
     , extra_ways(['normal_h'])
7 8 9 10
     , extra_run_opts('7')
     ],
     compile_and_run, [''])

11 12 13 14 15 16 17
test('T11489', [req_profiling, extra_clean(['T11489.prof', 'T11489.hp'])],
     run_command, ['$MAKE -s --no-print-directory T11489'])

# Below this line, run tests only with profiling ways.
setTestOpts(req_profiling)
setTestOpts(extra_ways(['prof']))
setTestOpts(only_ways(prof_ways))
18
setTestOpts(keep_prof_callstacks)
19 20 21

extra_prof_ways = ['prof', 'prof_hc_hb', 'prof_hb', 'prof_hd', 'prof_hy', 'prof_hr']

22 23 24 25
expect_broken_for_10037 = expect_broken_for(
  10037,
  [w for w in prof_ways if w not in opt_ways]) # e.g. prof and profllvm

26 27 28 29
test('heapprof001',
     [when(have_profiling(), extra_ways(extra_prof_ways)), extra_run_opts('7')],
     compile_and_run, [''])

30
test('T2592',
31
     [only_ways(['profasm']), extra_run_opts('+RTS -M1m -RTS'), exit_code(251)],
Simon Marlow's avatar
Simon Marlow committed
32
     compile_and_run, [''])
Ian Lynagh's avatar
Ian Lynagh committed
33

34
test('T3001', [only_ways(['prof_hb']), extra_ways(['prof_hb'])],
Ian Lynagh's avatar
Ian Lynagh committed
35
     compile_and_run, [''])
Ian Lynagh's avatar
Ian Lynagh committed
36

37
test('T3001-2', [only_ways(['prof_hb']), extra_ways(['prof_hb'])],
Ian Lynagh's avatar
Ian Lynagh committed
38
     compile_and_run, ['-package bytestring'])
39

40 41
# As with ioprof001, the unoptimised profile is different but
# not badly wrong (CAF attribution is different).
42
test('scc001', [], compile_and_run,
43
     ['-fno-state-hack -fno-full-laziness']) # Note [consistent stacks]
44

45
test('scc002', [], compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
46

47
test('scc003', [], compile_and_run,
Simon Marlow's avatar
Simon Marlow committed
48
     ['-fno-state-hack']) # Note [consistent stacks]
Simon Marlow's avatar
Simon Marlow committed
49

50
test('T5654', [expect_broken(5654)], compile_and_run, [''])
51

52
test('T5654b-O0', [only_ways(['prof'])], compile_and_run, [''])
53

54
test('T5654b-O1', [only_ways(['profasm'])], compile_and_run, [''])
55

56
test('scc005', [], compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
57

58
test('T5314', [extra_ways(extra_prof_ways)], compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
59

60
test('T680', [], compile_and_run,
Simon Marlow's avatar
Simon Marlow committed
61 62
     ['-fno-full-laziness']) # Note [consistent stacks]

63
test('T2552', [expect_broken_for_10037], compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
64

65 66 67 68 69
test('T949', [extra_ways(extra_prof_ways)], compile_and_run, [''])

# The results for 'prof' are fine, but the ordering changes.
# We care more about getting the optimised results right, so ignoring
# this for now.
70
test('ioprof', [expect_broken_for_10037, exit_code(1)], compile_and_run,
Simon Marlow's avatar
Simon Marlow committed
71 72 73 74
     ['-fno-full-laziness -fno-state-hack']) # Note [consistent stacks]

# These two examples are from the User's Guide:

75
test('prof-doc-fib', [], compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
76

77
test('prof-doc-last', [], compile_and_run, ['-fno-full-laziness'])
Simon Marlow's avatar
Simon Marlow committed
78

79 80
# unicode in cost centre names
test('T5559', [], compile_and_run, [''])
81

Simon Marlow's avatar
Simon Marlow committed
82 83 84 85 86 87 88 89
# Note [consistent stacks]
#  Certain optimisations can change the stacks we get out of the
#  profiler.  These flags are necessary (but perhaps not sufficient)
#  to get consistent stacks:
#
#       -fno-state-hack
#       -fno-full-laziness

90
test('callstack001', [expect_broken_for_10037],
Simon Marlow's avatar
Simon Marlow committed
91
     # unoptimised results are different w.r.t. CAF attribution
92
     compile_and_run, ['-fprof-auto-calls -fno-full-laziness -fno-state-hack'])
93

94 95
test('callstack002', [], compile_and_run,
     ['-fprof-auto-calls -fno-full-laziness -fno-state-hack'])
Simon Marlow's avatar
Simon Marlow committed
96

97
# Should not stack overflow with -prof -fprof-auto
98
test('T5363', [], compile_and_run, [''])
99

100
test('profinline001', [], compile_and_run, [''])
101 102 103 104 105 106 107 108

test('T11627a', [extra_ways(extra_prof_ways)], compile_and_run, [''])

test('T11627b', [ extra_run_opts('+RTS -i0 -RTS')  # census after each GC
                , extra_ways(extra_prof_ways)
                ]
                , compile_and_run
                , [''])
109 110 111 112

test('T11978a',
     [only_ways(['profthreaded']), extra_run_opts('+RTS -hb -N10')],
     compile_and_run, [''])