<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none"><!-- p { margin-top: 0px; margin-bottom: 0px; }--></style>
</head>
<body dir="ltr" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p>I think there is a misunderstanding here, Rui.<br>
</p>
<p><br>
</p>
<p>My change get rids of <span style="color: rgb(33, 33, 33); font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);">llvm::sort</span>, erase() and <span style="color: rgb(33, 33, 33); font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);">std::unique</span>
 calls introduced in <a href="https://reviews.llvm.org/rL334991">https://reviews.llvm.org/rL334991</a>,<br>
</p>
<p>that was the point of my change. I solved it with a single llvm::find_if in <a href="https://reviews.llvm.org/rL335337">https://reviews.llvm.org/rL335337</a>.<br>
</p>
<p><br>
</p>
<p>Basing on recent comments I also replaced llvm::find_if I added with the loop in
<a href="https://reviews.llvm.org/rL335447">https://reviews.llvm.org/rL335447</a>​.<br>
</p>
<p><br>
</p>
<div id="Signature">
<div name="divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:; margin:0">
<div class="BodyFragment"><font size="2">
<div class="PlainText">Best regards,<br>
George | Developer | <span style="background-color:rgb(255,255,255); color:rgb(33,33,33); font-family:Calibri,sans-serif; font-size:13.3333px">Access Softek, Inc</span></div>
</font></div>
</div>
</div>
<div style="color: rgb(33, 33, 33);">
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>От:</b> Rui Ueyama <ruiu@google.com><br>
<b>Отправлено:</b> 25 июня 2018 г. 8:44<br>
<b>Кому:</b> Shoaib Meenai<br>
<b>Копия:</b> George Rimar; llvm-commits<br>
<b>Тема:</b> Re: [lld] r335337 - [ELF] - Change how we handle suplicate -wrap. [NFC]</font>
<div> </div>
</div>
<div>
<div dir="ltr">I think I agree with Shoaib about this patch. The old code doesn't look sophisticated as the new code which uses a higher-order function, but the old code was more aligned with the lld's style. In lld, we prefer plain for-loop over a higher-order
 function. Could you please revert?</div>
<br>
<div class="gmail_quote">
<div dir="ltr">On Sat, Jun 23, 2018 at 5:19 AM Shoaib Meenai 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:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div lang="EN-US">
<div class="m_2083638022606549757WordSection1">
<p class="MsoNormal">Test case?<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I think a loop might be cleaner than the find_if here, and it would be more consistent with LLD's general style.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border:none; border-top:solid #b5c4df 1.0pt; padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-left:.5in"><b><span style="font-size:12.0pt; color:black">From:
</span></b><span style="font-size:12.0pt; color:black">llvm-commits <<a href="mailto:llvm-commits-bounces@lists.llvm.org" target="_blank">llvm-commits-bounces@lists.llvm.org</a>> on behalf of George Rimar via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>><br>
<b>Reply-To: </b>George Rimar <<a href="mailto:grimar@accesssoftek.com" target="_blank">grimar@accesssoftek.com</a>><br>
<b>Date: </b>Friday, June 22, 2018 at 4:22 AM<br>
<b>To: </b>"<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>" <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>><br>
<b>Subject: </b>[lld] r335337 - [ELF] - Change how we handle suplicate -wrap. [NFC]<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Author: grimar<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Date: Fri Jun 22 04:18:11 2018<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">New Revision: 335337<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D335337-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=kLg3NLMsMNgV7J0ezhc_ofICBgptUy3l1QaDZyvKYdQ&s=nNHBpytUwWlQ1IdJyvIOPV8tCx6kVtvJq1lhPiUMmMw&e=" target="_blank">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D335337-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=kLg3NLMsMNgV7J0ezhc_ofICBgptUy3l1QaDZyvKYdQ&s=nNHBpytUwWlQ1IdJyvIOPV8tCx6kVtvJq1lhPiUMmMw&e=</a><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Log:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">[ELF] - Change how we handle suplicate -wrap. [NFC]<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">This avoids doing llvm::sort and std::unique for -wrap options.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">I think it is more clean way.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    lld/trunk/ELF/Driver.cpp<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    lld/trunk/ELF/SymbolTable.cpp<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: lld/trunk/ELF/Driver.cpp<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_ELF_Driver.cpp-3Frev-3D335337-26r1-3D335336-26r2-3D335337-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=kLg3NLMsMNgV7J0ezhc_ofICBgptUy3l1QaDZyvKYdQ&s=85yxVCAOkTRpBEXBvcR0HT0kuimCRlTD70Nd5anqlgM&e=" target="_blank">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_ELF_Driver.cpp-3Frev-3D335337-26r1-3D335336-26r2-3D335337-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=kLg3NLMsMNgV7J0ezhc_ofICBgptUy3l1QaDZyvKYdQ&s=85yxVCAOkTRpBEXBvcR0HT0kuimCRlTD70Nd5anqlgM&e=</a><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- lld/trunk/ELF/Driver.cpp (original)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ lld/trunk/ELF/Driver.cpp Fri Jun 22 04:18:11 2018<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1304,11 +1304,8 @@ template <class ELFT> void LinkerDriver:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Symtab->scanVersionScript();<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   // Create wrapped symbols for -wrap option.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  std::vector<std::string> Wraps = Args.getAllArgValues(OPT_wrap);<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  llvm::sort(Wraps.begin(), Wraps.end());<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  Wraps.erase(std::unique(Wraps.begin(), Wraps.end()), Wraps.end());<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  for (StringRef Name : Wraps)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    Symtab->addSymbolWrap<ELFT>(Name);<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  for (auto *Arg : Args.filtered(OPT_wrap))<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    Symtab->addSymbolWrap<ELFT>(Arg->getValue());<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   // Do link-time optimization if given files are LLVM bitcode files.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   // This compiles bitcode files into real object files.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: lld/trunk/ELF/SymbolTable.cpp<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_ELF_SymbolTable.cpp-3Frev-3D335337-26r1-3D335336-26r2-3D335337-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=kLg3NLMsMNgV7J0ezhc_ofICBgptUy3l1QaDZyvKYdQ&s=0MyoZRpNw0irOfUP_nOvDilUeOFR3HUQKhRfGzRTWY4&e=" target="_blank">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_ELF_SymbolTable.cpp-3Frev-3D335337-26r1-3D335336-26r2-3D335337-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=kLg3NLMsMNgV7J0ezhc_ofICBgptUy3l1QaDZyvKYdQ&s=0MyoZRpNw0irOfUP_nOvDilUeOFR3HUQKhRfGzRTWY4&e=</a><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- lld/trunk/ELF/SymbolTable.cpp (original)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ lld/trunk/ELF/SymbolTable.cpp Fri Jun 22 04:18:11 2018<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -158,6 +158,13 @@ template <class ELFT> void SymbolTable::<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   Symbol *Sym = find(Name);<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (!Sym)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     return;<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  // Do not wrap the same symbol twice.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  if (llvm::find_if(WrappedSymbols, [&](const WrappedSymbol &S) {<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+        return S.Sym == Sym;<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      }) != WrappedSymbols.end())<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    return;<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   Symbol *Real = addUndefined<ELFT>(Saver.save("__real_" + Name));<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   Symbol *Wrap = addUndefined<ELFT>(Saver.save("__wrap_" + Name));<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   WrappedSymbols.push_back({Sym, Real, Wrap});<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">_______________________________________________<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">llvm-commits mailing list<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=kLg3NLMsMNgV7J0ezhc_ofICBgptUy3l1QaDZyvKYdQ&s=x-WhvYaGLgFgMwtmeFgkgjIgvFXFgPwlbSAIN45lIWk&e=" target="_blank">https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=kLg3NLMsMNgV7J0ezhc_ofICBgptUy3l1QaDZyvKYdQ&s=x-WhvYaGLgFgMwtmeFgkgjIgvFXFgPwlbSAIN45lIWk&e=</a><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><u></u> <u></u></p>
</div>
</div>
</div>
_______________________________________________<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="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote>
</div>
</div>
</div>
</body>
</html>