[llvm-branch-commits] [llvm] [BOLT] Match functions with name similarity (PR #95884)
Amir Ayupov via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Jul 2 18:55:01 PDT 2024
================
@@ -342,6 +350,107 @@ bool YAMLProfileReader::mayHaveProfileData(const BinaryFunction &BF) {
return false;
}
+uint64_t YAMLProfileReader::matchWithNameSimilarity(BinaryContext &BC) {
+ uint64_t MatchedWithNameSimilarity = 0;
+ ItaniumPartialDemangler ItaniumPartialDemangler;
+
+ // Demangle and derive namespace from function name.
+ auto DemangleName = [&](std::string &FunctionName) {
+ StringRef RestoredName = NameResolver::restore(FunctionName);
+ return demangle(RestoredName);
+ };
+ auto DeriveNameSpace = [&](std::string &DemangledName) {
+ if (ItaniumPartialDemangler.partialDemangle(DemangledName.c_str()))
+ return std::string("");
+ std::vector<char> Buffer(DemangledName.begin(), DemangledName.end());
+ size_t BufferSize = Buffer.size();
+ char *NameSpace = ItaniumPartialDemangler.getFunctionDeclContextName(
+ &Buffer[0], &BufferSize);
----------------
aaupov wrote:
What's bothering me here is the use of BufferSize – it's an output parameter from `getFunctionDecContextName` and yet unused in the construction of output string.
https://github.com/llvm/llvm-project/pull/95884
More information about the llvm-branch-commits
mailing list