[memprof] Use SmallVector for InlinedCallStack (NFC) (#114599) We can stay within 8 inlined elements more than 99% of the time while building a large application.
diff --git a/llvm/lib/Analysis/MemoryProfileInfo.cpp b/llvm/lib/Analysis/MemoryProfileInfo.cpp index 2b49dce..d3d1258 100644 --- a/llvm/lib/Analysis/MemoryProfileInfo.cpp +++ b/llvm/lib/Analysis/MemoryProfileInfo.cpp
@@ -69,7 +69,8 @@ MDNode *llvm::memprof::buildCallstackMetadata(ArrayRef<uint64_t> CallStack, LLVMContext &Ctx) { - std::vector<Metadata *> StackVals; + SmallVector<Metadata *, 8> StackVals; + StackVals.reserve(CallStack.size()); for (auto Id : CallStack) { auto *StackValMD = ValueAsMetadata::get(ConstantInt::get(Type::getInt64Ty(Ctx), Id));
diff --git a/llvm/lib/Transforms/Instrumentation/MemProfiler.cpp b/llvm/lib/Transforms/Instrumentation/MemProfiler.cpp index 4a43120..248d72e 100644 --- a/llvm/lib/Transforms/Instrumentation/MemProfiler.cpp +++ b/llvm/lib/Transforms/Instrumentation/MemProfiler.cpp
@@ -680,7 +680,7 @@ } static void addCallsiteMetadata(Instruction &I, - std::vector<uint64_t> &InlinedCallStack, + ArrayRef<uint64_t> InlinedCallStack, LLVMContext &Ctx) { I.setMetadata(LLVMContext::MD_callsite, buildCallstackMetadata(InlinedCallStack, Ctx)); @@ -905,7 +905,7 @@ continue; // List of call stack ids computed from the location hashes on debug // locations (leaf to inlined at root). - std::vector<uint64_t> InlinedCallStack; + SmallVector<uint64_t, 8> InlinedCallStack; // Was the leaf location found in one of the profile maps? bool LeafFound = false; // If leaf was found in a map, iterators pointing to its location in both