REQUIRES: x86_64-linux The input raw profile test has been generated from the following source code: ``` #include #include __attribute__((always_inline)) void qux(int x) { char *ptr = malloc(x); memset(ptr, 0, x); free(ptr); } __attribute__((noinline)) void foo(int x){ qux(x); } __attribute__((noinline)) void bar(int x) { foo(x); } int main(int argc, char **argv) { bar(argc); return 0; } ``` Compile and run with the following commands: ``` bin/clang -fuse-ld=lld -Wl,--no-rosegment -gmlt -fdebug-info-for-profiling \ -fmemory-profile -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer \ -fno-optimize-sibling-calls -m64 -Wl,-build-id inline.c -o memprof-inline.exe env MEMPROF_OPTIONS=log_path=stdout ./memprof-inline.exe > inline.memprofraw ``` From a debug run we collect the name to guid mappings to ensure that the ordering we observe is as expected. ``` build-dbg/bin/llvm-profdata show --memory --debug-only=memprof \ inline.memprofraw --profiled-binary memprof-inline.exe FunctionName: qux GUID: 15505678318020221912 FunctionName: foo GUID: 6699318081062747564 FunctionName: bar GUID: 16434608426314478903 FunctionName: main GUID: 15822663052811949562 [..omit output here which is checked below..] ``` RUN: llvm-profdata show --memory %p/Inputs/inline.memprofraw --profiled-binary %p/Inputs/inline.memprofexe | FileCheck %s CHECK: MemprofProfile: CHECK-NEXT: - CHECK-NEXT: Header: CHECK-NEXT: Version: 1 CHECK-NEXT: TotalSizeBytes: 880 CHECK-NEXT: NumSegments: 9 CHECK-NEXT: NumMibInfo: 2 CHECK-NEXT: NumStackOffsets: 2 CHECK-NEXT: Records: CHECK-NEXT: - CHECK-NEXT: FunctionGUID: 15505678318020221912 CHECK-NEXT: AllocSites: CHECK-NEXT: - CHECK-NEXT: Callstack: CHECK-NEXT: - CHECK-NEXT: Function: 15505678318020221912 CHECK-NEXT: LineOffset: 1 CHECK-NEXT: Column: 15 CHECK-NEXT: Inline: 1 CHECK-NEXT: - CHECK-NEXT: Function: 6699318081062747564 CHECK-NEXT: LineOffset: 0 CHECK-NEXT: Column: 18 CHECK-NEXT: Inline: 0 CHECK-NEXT: - CHECK-NEXT: Function: 16434608426314478903 CHECK-NEXT: LineOffset: 0 CHECK-NEXT: Column: 19 CHECK-NEXT: Inline: 0 CHECK-NEXT: - CHECK-NEXT: Function: 15822663052811949562 CHECK-NEXT: LineOffset: 1 CHECK-NEXT: Column: 3 CHECK-NEXT: Inline: 0 CHECK-NEXT: MemInfoBlock: CHECK-NEXT: AllocCount: 1 CHECK-NEXT: TotalAccessCount: 1 CHECK-NEXT: MinAccessCount: 1 CHECK-NEXT: MaxAccessCount: 1 CHECK-NEXT: TotalSize: 1 CHECK-NEXT: MinSize: 1 CHECK-NEXT: MaxSize: 1 CHECK-NEXT: AllocTimestamp: 894 CHECK-NEXT: DeallocTimestamp: 894 CHECK-NEXT: TotalLifetime: 0 CHECK-NEXT: MinLifetime: 0 CHECK-NEXT: MaxLifetime: 0 CHECK-NEXT: AllocCpuId: 23 CHECK-NEXT: DeallocCpuId: 23 CHECK-NEXT: NumMigratedCpu: 0 CHECK-NEXT: NumLifetimeOverlaps: 0 CHECK-NEXT: NumSameAllocCpu: 0 CHECK-NEXT: NumSameDeallocCpu: 0 CHECK-NEXT: DataTypeId: {{[0-9]+}} CHECK-NEXT: - CHECK-NEXT: FunctionGUID: 6699318081062747564 CHECK-NEXT: AllocSites: CHECK-NEXT: - CHECK-NEXT: Callstack: CHECK-NEXT: - CHECK-NEXT: Function: 15505678318020221912 CHECK-NEXT: LineOffset: 1 CHECK-NEXT: Column: 15 CHECK-NEXT: Inline: 1 CHECK-NEXT: - CHECK-NEXT: Function: 6699318081062747564 CHECK-NEXT: LineOffset: 0 CHECK-NEXT: Column: 18 CHECK-NEXT: Inline: 0 CHECK-NEXT: - CHECK-NEXT: Function: 16434608426314478903 CHECK-NEXT: LineOffset: 0 CHECK-NEXT: Column: 19 CHECK-NEXT: Inline: 0 CHECK-NEXT: - CHECK-NEXT: Function: 15822663052811949562 CHECK-NEXT: LineOffset: 1 CHECK-NEXT: Column: 3 CHECK-NEXT: Inline: 0 CHECK-NEXT: MemInfoBlock: CHECK-NEXT: AllocCount: 1 CHECK-NEXT: TotalAccessCount: 1 CHECK-NEXT: MinAccessCount: 1 CHECK-NEXT: MaxAccessCount: 1 CHECK-NEXT: TotalSize: 1 CHECK-NEXT: MinSize: 1 CHECK-NEXT: MaxSize: 1 CHECK-NEXT: AllocTimestamp: 894 CHECK-NEXT: DeallocTimestamp: 894 CHECK-NEXT: TotalLifetime: 0 CHECK-NEXT: MinLifetime: 0 CHECK-NEXT: MaxLifetime: 0 CHECK-NEXT: AllocCpuId: 23 CHECK-NEXT: DeallocCpuId: 23 CHECK-NEXT: NumMigratedCpu: 0 CHECK-NEXT: NumLifetimeOverlaps: 0 CHECK-NEXT: NumSameAllocCpu: 0 CHECK-NEXT: NumSameDeallocCpu: 0 CHECK-NEXT: DataTypeId: {{[0-9]+}} CHECK-NEXT: CallSites: CHECK-NEXT: - CHECK-NEXT: - CHECK-NEXT: Function: 15505678318020221912 CHECK-NEXT: LineOffset: 1 CHECK-NEXT: Column: 15 CHECK-NEXT: Inline: 1 CHECK-NEXT: - CHECK-NEXT: - CHECK-NEXT: Function: 6699318081062747564 CHECK-NEXT: LineOffset: 0 CHECK-NEXT: Column: 18 CHECK-NEXT: Inline: 0 CHECK-NEXT: - CHECK-NEXT: FunctionGUID: 15822663052811949562 CHECK-NEXT: CallSites: CHECK-NEXT: - CHECK-NEXT: - CHECK-NEXT: Function: 15822663052811949562 CHECK-NEXT: LineOffset: 1 CHECK-NEXT: Column: 3 CHECK-NEXT: Inline: 0 CHECK-NEXT: - CHECK-NEXT: FunctionGUID: 16434608426314478903 CHECK-NEXT: CallSites: CHECK-NEXT: - CHECK-NEXT: - CHECK-NEXT: Function: 16434608426314478903 CHECK-NEXT: LineOffset: 0 CHECK-NEXT: Column: 19 CHECK-NEXT: Inline: 0