<html><head></head><body>This is because of r283266. The main advantage is not depending on the details of the implementation, like the type of the map.<br>
<br>
Cheers,<br>
Rafael<br><br><div class="gmail_quote">On October 4, 2016 6:54:07 PM EDT, Rui Ueyama <ruiu@google.com> wrote:<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div dir="ltr">Which change did this make possible?</div><div class="gmail_extra"><br /><div class="gmail_quote">On Tue, Oct 4, 2016 at 3:43 PM, Rafael Espindola via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br /><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rafael<br />
Date: Tue Oct  4 17:43:38 2016<br />
New Revision: 283267<br />
<br />
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=283267&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr />project?rev=283267&view=rev</a><br />
Log:<br />
Update for llvm change.<br />
<br />
Modified:<br />
    lld/trunk/ELF/ELFCreator.cpp<br />
    lld/trunk/ELF/OutputSections.<wbr />cpp<br />
<br />
Modified: lld/trunk/ELF/ELFCreator.cpp<br />
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/ELFCreator.cpp?rev=283267&r1=283266&r2=283267&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr />project/lld/trunk/ELF/<wbr />ELFCreator.cpp?rev=283267&r1=<wbr />283266&r2=283267&view=diff</a><br />
==============================<wbr />==============================<wbr />==================<br />
--- lld/trunk/ELF/ELFCreator.cpp (original)<br />
+++ lld/trunk/ELF/ELFCreator.cpp Tue Oct  4 17:43:38 2016<br />
@@ -100,10 +100,8 @@ template <class ELFT> std::size_t ELFCre<br />
<br />
 template <class ELFT> void ELFCreator<ELFT>::write(uint8_<wbr />t *Out) {<br />
   std::memcpy(Out, &Header, sizeof(Elf_Ehdr));<br />
-  std::copy(SecHdrStrTabBuilder.<wbr />data().begin(),<br />
-            SecHdrStrTabBuilder.data().<wbr />end(), Out + ShStrTab->sh_offset);<br />
-  std::copy(StrTabBuilder.data()<wbr />.begin(), StrTabBuilder.data().end(),<br />
-            Out + StrTab->sh_offset);<br />
+  SecHdrStrTabBuilder.write(Out + ShStrTab->sh_offset);<br />
+  StrTabBuilder.write(Out + StrTab->sh_offset);<br />
<br />
   Elf_Sym *Sym = reinterpret_cast<Elf_Sym *>(Out + SymTab->sh_offset);<br />
   // Skip null.<br />
<br />
Modified: lld/trunk/ELF/OutputSections.<wbr />cpp<br />
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=283267&r1=283266&r2=283267&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr />project/lld/trunk/ELF/<wbr />OutputSections.cpp?rev=283267&<wbr />r1=283266&r2=283267&view=diff</a><br />
==============================<wbr />==============================<wbr />==================<br />
--- lld/trunk/ELF/OutputSections.<wbr />cpp (original)<br />
+++ lld/trunk/ELF/OutputSections.<wbr />cpp Tue Oct  4 17:43:38 2016<br />
@@ -1222,15 +1222,7 @@ MergeOutputSection<ELFT>::<wbr />MergeOutputSec<br />
       Builder(StringTableBuilder::<wbr />RAW, Alignment) {}<br />
<br />
 template <class ELFT> void MergeOutputSection<ELFT>::<wbr />writeTo(uint8_t *Buf) {<br />
-  if (shouldTailMerge()) {<br />
-    StringRef Data = Builder.data();<br />
-    memcpy(Buf, Data.data(), Data.size());<br />
-    return;<br />
-  }<br />
-  for (const std::pair<CachedHash<<wbr />StringRef>, size_t> &P : Builder.getMap()) {<br />
-    StringRef Data = P.first.Val;<br />
-    memcpy(Buf + P.second, Data.data(), Data.size());<br />
-  }<br />
+  Builder.write(Buf);<br />
 }<br />
<br />
 static StringRef toStringRef(ArrayRef<uint8_t> A) {<br />
@@ -1268,6 +1260,8 @@ template <class ELFT> bool MergeOutputSe<br />
 template <class ELFT> void MergeOutputSection<ELFT>::<wbr />finalize() {<br />
   if (shouldTailMerge())<br />
     Builder.finalize();<br />
+  else<br />
+    Builder.finalizeInOrder();<br />
   this->Header.sh_size = Builder.getSize();<br />
 }<br />
<br />
<br />
<br />
______________________________<wbr />_________________<br />
llvm-commits mailing list<br />
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br />
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr />mailman/listinfo/llvm-commits</a><br />
</blockquote></div><br /></div>
</blockquote></div><br>
-- <br>
Sent from my Android device with K-9 Mail. Please excuse my brevity.</body></html>