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

Teresa Johnson via llvm-commits llvm-commits at lists.llvm.org
Sun Jun 2 08:20:48 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) {
----------------
teresajohnson wrote:

If we expect MemProfCallStackData to be unused by the caller of build(), could it be std::move'd and then use takeVector here to avoid the copying?

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


More information about the llvm-commits mailing list