aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/tools/llvm-profdata/memprof-yaml.test
blob: 2e52b796ceedcbc2ad8d2fd199bf8a5bbccff79f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
; RUN: split-file %s %t
; COM: The text format only supports the latest version.

; Verify that the YAML output is identical to the YAML input.
; memprof-in.yaml has both heap profile records and data access profiles.
; RUN: llvm-profdata merge --memprof-version=4 %t/memprof-in.yaml -o %t/memprof-out.indexed
; RUN: llvm-profdata show --memory %t/memprof-out.indexed > %t/memprof-out.yaml
; RUN: diff -b %t/memprof-in.yaml %t/memprof-out.yaml

; Merge text profile as v3 binary profile. Test that the merged v3 profile
; are identical to memprof-in-v3.yaml, and doesn't have callee guids or dap.
; RUN: llvm-profdata merge --memprof-version=3 %t/memprof-in.yaml -o %t/memprof-out-v3.indexed
; RUN: llvm-profdata show --memory %t/memprof-out-v3.indexed > %t/memprof-out-v3.yaml
; RUN: diff -b %t/memprof-out-v3.yaml %t/memprof-in-v3.yaml

; memprof-in-no-dap.yaml has empty data access profiles.
; RUN: llvm-profdata merge --memprof-version=4 %t/memprof-in-no-dap.yaml -o %t/memprof-out.indexed
; RUN: llvm-profdata show --memory %t/memprof-out.indexed > %t/memprof-out-no-dap.yaml
; RUN: diff -b %t/memprof-in-no-dap.yaml %t/memprof-out-no-dap.yaml

;--- memprof-in.yaml
---
# MemProfSummary:
#   Total contexts: 2
#   Total cold contexts: 0
#   Total hot contexts: 0
#   Maximum cold context total size: 0
#   Maximum warm context total size: 666
#   Maximum hot context total size: 0
---
HeapProfileRecords:
  - GUID:            0xdeadbeef12345678
    AllocSites:
      - Callstack:
          - { Function: 0x1111111111111111, LineOffset: 11, Column: 10, IsInlineFrame: true }
          - { Function: 0x2222222222222222, LineOffset: 22, Column: 20, IsInlineFrame: false }
        MemInfoBlock:
          AllocCount:      111
          TotalSize:       222
          TotalLifetime:   333
          TotalLifetimeAccessDensity: 444
      - Callstack:
          - { Function: 0x3333333333333333, LineOffset: 33, Column: 30, IsInlineFrame: false }
          - { Function: 0x4444444444444444, LineOffset: 44, Column: 40, IsInlineFrame: true }
        MemInfoBlock:
          AllocCount:      555
          TotalSize:       666
          TotalLifetime:   777
          TotalLifetimeAccessDensity: 888
    CallSites:
      - Frames:
        - { Function: 0x5555555555555555, LineOffset: 55, Column: 50, IsInlineFrame: true }
        - { Function: 0x6666666666666666, LineOffset: 66, Column: 60, IsInlineFrame: false }
        CalleeGuids: [ 0x100, 0x200 ]
      - Frames:
        - { Function: 0x7777777777777777, LineOffset: 77, Column: 70, IsInlineFrame: true }
        - { Function: 0x8888888888888888, LineOffset: 88, Column: 80, IsInlineFrame: false }
        CalleeGuids: [ 0x300 ]
DataAccessProfiles:
  SampledRecords:
    - Symbol:          abcde
      AccessCount:     100
      Locations:
      - FileName:      file2.h
        Line:          123
      - FileName:      file3.cpp
        Line:          456
    - Hash:            101010
      AccessCount:     200
      Locations:
        - FileName:        file.cpp
          Line:            233
  KnownColdSymbols:
    - foo
    - bar
  KnownColdStrHashes: [ 999, 1001 ]
...
;--- memprof-in-v3.yaml
---
# MemProfSummary:
#   Total contexts: 2
#   Total cold contexts: 0
#   Total hot contexts: 0
#   Maximum cold context total size: 0
#   Maximum warm context total size: 666
#   Maximum hot context total size: 0
---
HeapProfileRecords:
  - GUID:            0xdeadbeef12345678
    AllocSites:
      - Callstack:
          - { Function: 0x1111111111111111, LineOffset: 11, Column: 10, IsInlineFrame: true }
          - { Function: 0x2222222222222222, LineOffset: 22, Column: 20, IsInlineFrame: false }
        MemInfoBlock:
          AllocCount:      111
          TotalSize:       222
          TotalLifetime:   333
          TotalLifetimeAccessDensity: 444
      - Callstack:
          - { Function: 0x3333333333333333, LineOffset: 33, Column: 30, IsInlineFrame: false }
          - { Function: 0x4444444444444444, LineOffset: 44, Column: 40, IsInlineFrame: true }
        MemInfoBlock:
          AllocCount:      555
          TotalSize:       666
          TotalLifetime:   777
          TotalLifetimeAccessDensity: 888
    CallSites:
      - Frames:
        - { Function: 0x5555555555555555, LineOffset: 55, Column: 50, IsInlineFrame: true }
        - { Function: 0x6666666666666666, LineOffset: 66, Column: 60, IsInlineFrame: false }
      - Frames:
        - { Function: 0x7777777777777777, LineOffset: 77, Column: 70, IsInlineFrame: true }
        - { Function: 0x8888888888888888, LineOffset: 88, Column: 80, IsInlineFrame: false }
...
;--- memprof-in-no-dap.yaml
---
# MemProfSummary:
#   Total contexts: 2
#   Total cold contexts: 0
#   Total hot contexts: 0
#   Maximum cold context total size: 0
#   Maximum warm context total size: 666
#   Maximum hot context total size: 0
---
HeapProfileRecords:
  - GUID:            0xdeadbeef12345678
    AllocSites:
      - Callstack:
          - { Function: 0x1111111111111111, LineOffset: 11, Column: 10, IsInlineFrame: true }
          - { Function: 0x2222222222222222, LineOffset: 22, Column: 20, IsInlineFrame: false }
        MemInfoBlock:
          AllocCount:      111
          TotalSize:       222
          TotalLifetime:   333
          TotalLifetimeAccessDensity: 444
      - Callstack:
          - { Function: 0x3333333333333333, LineOffset: 33, Column: 30, IsInlineFrame: false }
          - { Function: 0x4444444444444444, LineOffset: 44, Column: 40, IsInlineFrame: true }
        MemInfoBlock:
          AllocCount:      555
          TotalSize:       666
          TotalLifetime:   777
          TotalLifetimeAccessDensity: 888
    CallSites:
      - Frames:
        - { Function: 0x5555555555555555, LineOffset: 55, Column: 50, IsInlineFrame: true }
        - { Function: 0x6666666666666666, LineOffset: 66, Column: 60, IsInlineFrame: false }
        CalleeGuids: [ 0x100, 0x200 ]
      - Frames:
        - { Function: 0x7777777777777777, LineOffset: 77, Column: 70, IsInlineFrame: true }
        - { Function: 0x8888888888888888, LineOffset: 88, Column: 80, IsInlineFrame: false }
        CalleeGuids: [ 0x300 ]
...