[llvm] [SampleProfile] Support MD5-based ProfileSymbolList (PR #210235)
David Li via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 17 09:45:27 PDT 2026
================
@@ -1688,19 +1696,45 @@ class ProfileSymbolList {
Syms.insert(Name.copy(Allocator));
}
- bool contains(StringRef Name) { return Syms.count(Name); }
+ bool contains(StringRef Name) const {
+ return Syms.count(Name) || ColdGUIDTable.contains(llvm::MD5Hash(Name));
+ }
void merge(const ProfileSymbolList &List) {
+ assert(List.ColdGUIDTable.empty() &&
+ "Merging pre-hashed MD5 ProfileSymbolList not yet implemented");
for (auto Sym : List.Syms)
add(Sym, true);
}
- unsigned size() { return Syms.size(); }
+ unsigned size() const {
+ assert((ColdGUIDTable.empty() || Syms.empty()) &&
+ "Mixed string/GUID ProfileSymbolList size not yet implemented");
+ return Syms.size() + ColdGUIDTable.size();
+ }
void reserve(size_t Size) { Syms.reserve(Size); }
void setToCompress(bool TC) { ToCompress = TC; }
bool toCompress() { return ToCompress; }
+ std::vector<uint64_t> collectGUIDs() const {
+ assert(ColdGUIDTable.empty() &&
+ "Collecting GUIDs from existing MD5 table not yet implemented");
+ std::vector<uint64_t> Keys;
+ Keys.reserve(Syms.size());
+ llvm::append_range(Keys, llvm::map_range(Syms, llvm::MD5Hash));
+ llvm::sort(Keys);
----------------
david-xl wrote:
should it be in BFS order?
https://github.com/llvm/llvm-project/pull/210235
More information about the llvm-commits
mailing list