https://github.com/tbaederr created https://github.com/llvm/llvm-project/pull/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<<`. >From cf9e2ae4fe5fa0bcda77a1ae6edf98a69986af39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= <[email protected]> Date: Wed, 30 Sep 2026 13:16:32 +0200 Subject: [PATCH] quoted name --- clang/include/clang/Basic/Builtins.h | 3 ++- clang/lib/Basic/Builtins.cpp | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) 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 { _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
