| ; 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 | |
| ; Make sure we can ingest a YAML profile containing AllocSites only. | |
| ; That is, CallSites are missing. | |
| ; RUN: llvm-profdata merge --memprof-version=4 %t/memprof-in-alloc-sites-only.yaml -o %t/memprof-out-alloc-sites-only.indexed | |
| ; RUN: llvm-profdata show --memory %t/memprof-out-alloc-sites-only.indexed > %t/memprof-out-alloc-sites-only.yaml | |
| ; RUN: diff -b %t/memprof-out-alloc-sites-only.yaml %t/memprof-in-alloc-sites-only.yaml | |
| ; Make sure we can ingest a YAML profile containing CallSites only. | |
| ; That is, AllocSites are missing. | |
| ; RUN: llvm-profdata merge --memprof-version=4 %t/memprof-in-call-sites-only.yaml -o %t/memprof-out-call-sites-only.indexed | |
| ; RUN: llvm-profdata show --memory %t/memprof-out-call-sites-only.indexed > %t/memprof-out-call-sites-only.yaml | |
| ; RUN: diff -b %t/memprof-out-call-sites-only.yaml %t/memprof-in-call-sites-only.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-no-heap.yaml has empty heap access profiles. | |
| ; RUN: llvm-profdata merge --memprof-version=4 %t/memprof-in-no-heap.yaml -o %t/memprof-out-no-heap.indexed | |
| ; RUN: llvm-profdata show --memory %t/memprof-out-no-heap.indexed > %t/memprof-out-no-heap.yaml | |
| ; RUN: diff -b %t/memprof-in-no-heap.yaml %t/memprof-out-no-heap.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 | |
| # Num hot symbols and string literals: 2 | |
| # Num known cold symbols: 2 | |
| # Num known cold string literals: 2 | |
| --- | |
| 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: 202 | |
| Locations: | |
| - FileName: file2.h | |
| Line: 123 | |
| - FileName: file3.cpp | |
| Line: 456 | |
| - Hash: 101010 | |
| AccessCount: 200 | |
| Locations: | |
| - FileName: file.cpp | |
| Line: 233 | |
| KnownColdSymbols: | |
| - bar | |
| - foo | |
| 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-alloc-sites-only.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 | |
| ... | |
| ;--- memprof-in-call-sites-only.yaml | |
| --- | |
| # MemProfSummary: | |
| # Total contexts: 0 | |
| # Total cold contexts: 0 | |
| # Total hot contexts: 0 | |
| # Maximum cold context total size: 0 | |
| # Maximum warm context total size: 0 | |
| # Maximum hot context total size: 0 | |
| --- | |
| HeapProfileRecords: | |
| - GUID: 0xdeadbeef12345678 | |
| 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 ] | |
| ... | |
| ;--- 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 ] | |
| ... | |
| ;--- memprof-in-no-heap.yaml | |
| --- | |
| # MemProfSummary: | |
| # Total contexts: 0 | |
| # Total cold contexts: 0 | |
| # Total hot contexts: 0 | |
| # Maximum cold context total size: 0 | |
| # Maximum warm context total size: 0 | |
| # Maximum hot context total size: 0 | |
| # Num hot symbols and string literals: 2 | |
| # Num known cold symbols: 2 | |
| # Num known cold string literals: 2 | |
| --- | |
| DataAccessProfiles: | |
| SampledRecords: | |
| - Symbol: abcde | |
| AccessCount: 202 | |
| Locations: | |
| - FileName: file2.h | |
| Line: 123 | |
| - FileName: file3.cpp | |
| Line: 456 | |
| - Hash: 101010 | |
| AccessCount: 200 | |
| Locations: | |
| - FileName: file.cpp | |
| Line: 233 | |
| KnownColdSymbols: | |
| - bar | |
| - foo | |
| KnownColdStrHashes: [ 999, 1001 ] | |
| ... |