[llvm] [SampleFDO] Extend the function base name max size (PR #135863)

Lei Wang via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 15 14:43:55 PDT 2025


https://github.com/wlei-llvm created https://github.com/llvm/llvm-project/pull/135863

The function base name could be way long which leads to a crash. Update to extend the max size.

Also changed to use dynamic allocation( `std::vector<char>` ) to avoid stack overflow.

>From 5b253fad993c1d0a96a103cc873c928cb81e737b Mon Sep 17 00:00:00 2001
From: wlei <wlei at fb.com>
Date: Tue, 15 Apr 2025 14:32:42 -0700
Subject: [PATCH] [SampleFDO] Extend the function base name max size

---
 llvm/lib/Transforms/IPO/SampleProfileMatcher.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/llvm/lib/Transforms/IPO/SampleProfileMatcher.cpp b/llvm/lib/Transforms/IPO/SampleProfileMatcher.cpp
index d6d1b7c51d4c0..963c321772d6e 100644
--- a/llvm/lib/Transforms/IPO/SampleProfileMatcher.cpp
+++ b/llvm/lib/Transforms/IPO/SampleProfileMatcher.cpp
@@ -737,11 +737,11 @@ bool SampleProfileMatcher::functionMatchesProfileHelper(
     auto FunctionName = FName.str();
     if (Demangler.partialDemangle(FunctionName.c_str()))
       return std::string();
-    constexpr size_t MaxBaseNameSize = 4096;
-    char BaseNameBuf[MaxBaseNameSize] = {};
+    constexpr size_t MaxBaseNameSize = 65536;
+    std::vector<char> BaseNameBuf(MaxBaseNameSize, 0);
     size_t BaseNameSize = MaxBaseNameSize;
     char *BaseNamePtr =
-        Demangler.getFunctionBaseName(BaseNameBuf, &BaseNameSize);
+        Demangler.getFunctionBaseName(BaseNameBuf.data(), &BaseNameSize);
     return (BaseNamePtr && BaseNameSize)
                ? std::string(BaseNamePtr, BaseNameSize)
                : std::string();



More information about the llvm-commits mailing list