[llvm-branch-commits] [llvm] [llvm][mustache] Avoid extra allocations in parseSection (PR #159199)
Paul Kirth via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Sep 29 18:54:26 PDT 2025
https://github.com/ilovepi updated https://github.com/llvm/llvm-project/pull/159199
>From 057142b5db72fcd1147607898a0e7751e75b6492 Mon Sep 17 00:00:00 2001
From: Paul Kirth <paulkirth at google.com>
Date: Tue, 16 Sep 2025 09:40:04 -0700
Subject: [PATCH] [llvm][mustache] Avoid extra allocations in parseSection
We don't need to have extra allocations when concatenating raw bodies.
---
llvm/lib/Support/Mustache.cpp | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/llvm/lib/Support/Mustache.cpp b/llvm/lib/Support/Mustache.cpp
index 8eebeaec11925..5bd3c8d7d0d6b 100644
--- a/llvm/lib/Support/Mustache.cpp
+++ b/llvm/lib/Support/Mustache.cpp
@@ -602,9 +602,16 @@ void Parser::parseSection(ASTNode *Parent, ASTNode::Type Ty,
size_t Start = CurrentPtr;
parseMustache(CurrentNode);
const size_t End = CurrentPtr - 1;
+
+ size_t RawBodySize = 0;
+ for (size_t I = Start; I < End; ++I)
+ RawBodySize += Tokens[I].RawBody.size();
+
SmallString<128> RawBody;
- for (std::size_t I = Start; I < End; I++)
+ RawBody.reserve(RawBodySize);
+ for (std::size_t I = Start; I < End; ++I)
RawBody += Tokens[I].RawBody;
+
CurrentNode->setRawBody(Ctx.Saver.save(StringRef(RawBody)));
Parent->addChild(CurrentNode);
}
More information about the llvm-branch-commits
mailing list