Adds compile time flag -mllvm -memprof-histogram and runtime flag histogram=true|false to turn Histogram collection on and off. The -memprof-histogram flag relies on -memprof-use-callbacks=true to work. Updates shadow mapping logic in histogram mode from having one 8 byte counter for 64 bytes, to 1 byte for 8 bytes, capped at 255. Only supports this granularity as of now. Updates the RawMemprofReader and serializing MemoryInfoBlocks to binary format, including changing to a new version of the raw binary format from version 3 to version 4. Updates creating MemoryInfoBlocks with and without Histograms. When two MemoryInfoBlocks are merged, AccessCounts are summed up and the shorter Histogram is removed. Adds a memprof_histogram test case. Initial commit for adding AccessCountHistograms up until RawProfile for memprof
23 lines
699 B
Plaintext
23 lines
699 B
Plaintext
REQUIRES: x86_64-linux
|
|
|
|
To update the inputs used below run Inputs/update_memprof_inputs.sh /path/to/updated/clang
|
|
RUN: llvm-profdata show --memory %p/Inputs/multi.memprofraw --profiled-binary %p/Inputs/multi.memprofexe -o - | FileCheck %s
|
|
|
|
We expect 2 MIB entries, 1 each for the malloc calls in the program.
|
|
|
|
CHECK: MemprofProfile:
|
|
CHECK-NEXT: Summary:
|
|
CHECK-NEXT: Version: 4
|
|
CHECK-NEXT: NumSegments: {{[0-9]+}}
|
|
CHECK-NEXT: NumMibInfo: 2
|
|
CHECK-NEXT: NumAllocFunctions: 1
|
|
CHECK-NEXT: NumStackOffsets: 2
|
|
|
|
CHECK: SymbolName: main
|
|
CHECK-NEXT: LineOffset: 1
|
|
CHECK-NEXT: Column: 21
|
|
|
|
CHECK: SymbolName: main
|
|
CHECK-NEXT: LineOffset: 5
|
|
CHECK-NEXT: Column: 15
|