<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" link="blue" vlink="purple">
<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>