From bb129b562a82e46e554a0a997b549bbc24fc6385 Mon Sep 17 00:00:00 2001 From: Teresa Johnson Date: Fri, 5 Dec 2025 14:36:57 -0800 Subject: [PATCH] [MemProf] Add option to print function GUIDs during matching For debugging, add -memprof-print-function-guids option that will cause memprof matching to emit the computed function GUID for every function definition in the module to stderr. This is helpful because the profile only contains the function GUID and not the names. --- llvm/lib/Transforms/Instrumentation/MemProfUse.cpp | 8 ++++++++ .../PGOProfile/memprof-dump-matched-alloc-site.ll | 7 +++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Transforms/Instrumentation/MemProfUse.cpp b/llvm/lib/Transforms/Instrumentation/MemProfUse.cpp index 31e69784262da..c3ff90ea35a72 100644 --- a/llvm/lib/Transforms/Instrumentation/MemProfUse.cpp +++ b/llvm/lib/Transforms/Instrumentation/MemProfUse.cpp @@ -62,6 +62,11 @@ static cl::opt "context in this module's profiles"), cl::Hidden, cl::init(false)); +static cl::opt + PrintFunctionGuids("memprof-print-function-guids", + cl::desc("Print function GUIDs computed for matching"), + cl::Hidden, cl::init(false)); + static cl::opt SalvageStaleProfile("memprof-salvage-stale-profile", cl::desc("Salvage stale MemProf profile"), @@ -577,6 +582,9 @@ static void readMemprof(Module &M, Function &F, // linkage function. auto FuncName = F.getName(); auto FuncGUID = Function::getGUIDAssumingExternalLinkage(FuncName); + if (PrintFunctionGuids) + errs() << "MemProf: Function GUID " << FuncGUID << " is " << FuncName + << "\n"; std::optional MemProfRec; auto Err = MemProfReader->getMemProfRecord(FuncGUID).moveInto(MemProfRec); if (Err) { diff --git a/llvm/test/Transforms/PGOProfile/memprof-dump-matched-alloc-site.ll b/llvm/test/Transforms/PGOProfile/memprof-dump-matched-alloc-site.ll index 10cafff3490b3..f628c5a8a3251 100644 --- a/llvm/test/Transforms/PGOProfile/memprof-dump-matched-alloc-site.ll +++ b/llvm/test/Transforms/PGOProfile/memprof-dump-matched-alloc-site.ll @@ -26,7 +26,7 @@ ; REQUIRES: x86_64-linux ; RUN: split-file %s %t ; RUN: llvm-profdata merge %t/memprof-dump-matched-alloc-site.yaml -o %t/memprof-dump-matched-alloc-site.memprofdata -; RUN: opt < %t/memprof-dump-matched-alloc-site.ll -passes='memprof-use' -memprof-print-match-info -S -pass-remarks=memprof 2>&1 | FileCheck %s +; RUN: opt < %t/memprof-dump-matched-alloc-site.ll -passes='memprof-use' -memprof-print-match-info -memprof-print-function-guids -S -pass-remarks=memprof 2>&1 | FileCheck %s ;--- memprof-dump-matched-alloc-site.yaml --- @@ -78,9 +78,12 @@ HeapProfileRecords: ... ;--- memprof-dump-matched-alloc-site.ll -;; From -pass-remarks=memprof +;; From -pass-remarks=memprof and -memprof-print-function-guids +; CHECK: MemProf: Function GUID 4708092051066754107 is _Z2f1v ; CHECK: remark: memprof-dump-matched-alloc-site.cc:1:21: call in function _Z2f1v matched alloc context with alloc type notcold total size 3 full context id 5736731103568718490 frame count 1 +; CHECK: MemProf: Function GUID 14255129117669598641 is _Z2f2v ; CHECK: remark: memprof-dump-matched-alloc-site.cc:1:21: call in function _Z2f2v matched alloc context with alloc type notcold total size 3 full context id 5736731103568718490 frame count 2 +; CHECK: MemProf: Function GUID 2771528421763978342 is _Z2f3v ; CHECK: remark: memprof-dump-matched-alloc-site.cc:1:21: call in function _Z2f3v matched alloc context with alloc type notcold total size 3 full context id 5736731103568718490 frame count 3 ;; From -memprof-print-match-info