[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