[clang] ca7efca - [clang][builtins] Return a `SmallString` from `Builtin::Context::getQuotedName()` (#227963)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Oct 4 22:20:17 PDT 2026
Author: Timm Baeder
Date: 2026-10-05T05:20:10Z
New Revision: ca7efca53c3f804a318ccc1383ea8d7cf0b712bb
URL: https://github.com/llvm/llvm-project/commit/ca7efca53c3f804a318ccc1383ea8d7cf0b712bb
DIFF: https://github.com/llvm/llvm-project/commit/ca7efca53c3f804a318ccc1383ea8d7cf0b712bb.diff
LOG: [clang][builtins] Return a `SmallString` from `Builtin::Context::getQuotedName()` (#227963)
`getQuotedName()` keeps showing up in my profiling.
I thought returning a `SmallString<64>` wouldn't work since we're now
returning a rather large struct by value, but seems this is at least an
improvement:
https://llvm-compile-time-tracker.com/compare.php?from=b96b66160ace30c2b5eef1f4afdb14c95ecc26cd&to=cf9e2ae4fe5fa0bcda77a1ae6edf98a69986af39&stat=instructions:u
Things like passing a stream instead don't work since we're passing this
directly to the diagnostic `operator<<`.
Added:
Modified:
clang/include/clang/Basic/Builtins.h
clang/lib/Basic/Builtins.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/Basic/Builtins.h b/clang/include/clang/Basic/Builtins.h
index 9054f9415ce67..e39c7fe93561a 100644
--- a/clang/include/clang/Basic/Builtins.h
+++ b/clang/include/clang/Basic/Builtins.h
@@ -16,6 +16,7 @@
#define LLVM_CLANG_BASIC_BUILTINS_H
#include "llvm/ADT/ArrayRef.h"
+#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringTable.h"
@@ -260,7 +261,7 @@ class Context {
/// Return the identifier name for the specified builtin inside single quotes
/// for a diagnostic, e.g. "'__builtin_abs'".
- std::string getQuotedName(unsigned ID) const;
+ llvm::SmallString<64> getQuotedName(unsigned ID) const;
/// Get the type descriptor string for the specified builtin.
const char *getTypeString(unsigned ID) const;
diff --git a/clang/lib/Basic/Builtins.cpp b/clang/lib/Basic/Builtins.cpp
index 06fba04eb2df3..3bf87ca94f542 100644
--- a/clang/lib/Basic/Builtins.cpp
+++ b/clang/lib/Basic/Builtins.cpp
@@ -96,11 +96,13 @@ std::string Builtin::Context::getName(unsigned ID) const {
return I.getName(Shard);
}
-std::string Builtin::Context::getQuotedName(unsigned ID) const {
+SmallString<64> Builtin::Context::getQuotedName(unsigned ID) const {
const auto &[Shard, I] = getShardAndInfo(ID);
- return (Twine("'") + Shard.NamePrefix + (*Shard.Strings)[I.Offsets.Name] +
- "'")
- .str();
+ SmallString<64> Result("'");
+ Result += Shard.NamePrefix;
+ Result += (*Shard.Strings)[I.Offsets.Name];
+ Result += '\'';
+ return Result;
}
const char *Builtin::Context::getTypeString(unsigned ID) const {
More information about the cfe-commits
mailing list