<div dir="ltr">Hey Ben,<div><br></div><div>I reverted this a little bit ago. It seemed to be causing asan failures in clang tooling. I'll follow up with you offline for an easy repro.</div><div><br></div><div>-eric</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, May 14, 2020 at 8:14 AM Benjamin Kramer via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Author: Benjamin Kramer<br>
Date: 2020-05-14T17:11:44+02:00<br>
New Revision: 29560a89ddcaf3af9b8a73d98d968a0911d21e27<br>
<br>
URL: <a href="https://github.com/llvm/llvm-project/commit/29560a89ddcaf3af9b8a73d98d968a0911d21e27" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/29560a89ddcaf3af9b8a73d98d968a0911d21e27</a><br>
DIFF: <a href="https://github.com/llvm/llvm-project/commit/29560a89ddcaf3af9b8a73d98d968a0911d21e27.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/29560a89ddcaf3af9b8a73d98d968a0911d21e27.diff</a><br>
<br>
LOG: [Support] Make UniqueStringSaver wrap a StringSet<br>
<br>
This is slightly more efficient while providing exactly the same<br>
semantics.<br>
<br>
Added: <br>
<br>
<br>
Modified: <br>
    llvm/include/llvm/Support/StringSaver.h<br>
    llvm/lib/Support/StringSaver.cpp<br>
<br>
Removed: <br>
<br>
<br>
<br>
################################################################################<br>
diff  --git a/llvm/include/llvm/Support/StringSaver.h b/llvm/include/llvm/Support/StringSaver.h<br>
index c54044e3986c..b6b3c054d07d 100644<br>
--- a/llvm/include/llvm/Support/StringSaver.h<br>
+++ b/llvm/include/llvm/Support/StringSaver.h<br>
@@ -9,7 +9,7 @@<br>
 #ifndef LLVM_SUPPORT_STRINGSAVER_H<br>
 #define LLVM_SUPPORT_STRINGSAVER_H<br>
<br>
-#include "llvm/ADT/DenseSet.h"<br>
+#include "llvm/ADT/StringSet.h"<br>
 #include "llvm/ADT/StringRef.h"<br>
 #include "llvm/ADT/Twine.h"<br>
 #include "llvm/Support/Allocator.h"<br>
@@ -36,12 +36,8 @@ class StringSaver final {<br>
 ///<br>
 /// Compared to StringSaver, it does more work but avoids saving the same string<br>
 /// multiple times.<br>
-///<br>
-/// Compared to StringPool, it performs fewer allocations but doesn't support<br>
-/// refcounting/deletion.<br>
 class UniqueStringSaver final {<br>
-  StringSaver Strings;<br>
-  llvm::DenseSet<llvm::StringRef> Unique;<br>
+  StringSet<BumpPtrAllocator &> Strings;<br>
<br>
 public:<br>
   UniqueStringSaver(BumpPtrAllocator &Alloc) : Strings(Alloc) {}<br>
<br>
diff  --git a/llvm/lib/Support/StringSaver.cpp b/llvm/lib/Support/StringSaver.cpp<br>
index f7ccfb97ea79..999f37a9a75d 100644<br>
--- a/llvm/lib/Support/StringSaver.cpp<br>
+++ b/llvm/lib/Support/StringSaver.cpp<br>
@@ -19,8 +19,5 @@ StringRef StringSaver::save(StringRef S) {<br>
 }<br>
<br>
 StringRef UniqueStringSaver::save(StringRef S) {<br>
-  auto R = Unique.insert(S);<br>
-  if (R.second)                 // cache miss, need to actually save the string<br>
-    *R.first = Strings.save(S); // safe replacement with equal value<br>
-  return *R.first;<br>
+  return Strings.insert(S).first->getKey();<br>
 }<br>
<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>