[llvm] [memprof] Add CallStackRadixTreeBuilder (PR #93784)

Kazu Hirata via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 4 12:01:11 PDT 2024


================
@@ -410,6 +410,161 @@ CallStackId hashCallStack(ArrayRef<FrameId> CS) {
   return CSId;
 }
 
+// Returns the sorted list of call stacks.
+std::vector<CallStackRadixTreeBuilder::CSIdPair>
+CallStackRadixTreeBuilder::sortCallStacks(
+    llvm::MapVector<CallStackId, llvm::SmallVector<FrameId>>
+        &MemProfCallStackData) {
+  // Create a list of call stacks to be sorted.
+  std::vector<CSIdPair> CallStacks;
+  CallStacks.reserve(MemProfCallStackData.size());
+  for (auto &[CSId, CallStack] : MemProfCallStackData) {
----------------
kazutakahirata wrote:

This is really a good idea!  After I switched to `takeVector()`, `sortCallStacks` doesn't have much going on, so I've folded it into its caller -- `build()`.

https://github.com/llvm/llvm-project/pull/93784


More information about the llvm-commits mailing list