llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Timm Baeder (tbaederr)

<details>
<summary>Changes</summary>

`getQuotedName()` keeps showing up in my profiling.

I thought returning a `SmallString&lt;64&gt;` 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&amp;to=cf9e2ae4fe5fa0bcda77a1ae6edf98a69986af39&amp;stat=instructions:u

Things like passing a stream instead don't work since we're passing this 
directly to the diagnostic `operator&lt;&lt;`.

---
Full diff: https://github.com/llvm/llvm-project/pull/227963.diff


2 Files Affected:

- (modified) clang/include/clang/Basic/Builtins.h (+2-1) 
- (modified) clang/lib/Basic/Builtins.cpp (+6-4) 


``````````diff
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 {

``````````

</details>


https://github.com/llvm/llvm-project/pull/227963
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to