<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Test case?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></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.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></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 <llvm-commits-bounces@lists.llvm.org> on behalf of George Rimar via llvm-commits <llvm-commits@lists.llvm.org><br>
<b>Reply-To: </b>George Rimar <grimar@accesssoftek.com><br>
<b>Date: </b>Friday, June 22, 2018 at 4:22 AM<br>
<b>To: </b>"llvm-commits@lists.llvm.org" <llvm-commits@lists.llvm.org><br>
<b>Subject: </b>[lld] r335337 - [ELF] - Change how we handle suplicate -wrap. [NFC]<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Author: grimar<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Date: Fri Jun 22 04:18:11 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">New Revision: 335337<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></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=">
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><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Log:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">[ELF] - Change how we handle suplicate -wrap. [NFC]<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">This avoids doing llvm::sort and std::unique for -wrap options.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">I think it is more clean way.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    lld/trunk/ELF/Driver.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    lld/trunk/ELF/SymbolTable.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: lld/trunk/ELF/Driver.cpp<o:p></o:p></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=">
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><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- lld/trunk/ELF/Driver.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ lld/trunk/ELF/Driver.cpp Fri Jun 22 04:18:11 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1304,11 +1304,8 @@ template <class ELFT> void LinkerDriver:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Symtab->scanVersionScript();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   // Create wrapped symbols for -wrap option.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  std::vector<std::string> Wraps = Args.getAllArgValues(OPT_wrap);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  llvm::sort(Wraps.begin(), Wraps.end());<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  Wraps.erase(std::unique(Wraps.begin(), Wraps.end()), Wraps.end());<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  for (StringRef Name : Wraps)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    Symtab->addSymbolWrap<ELFT>(Name);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  for (auto *Arg : Args.filtered(OPT_wrap))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    Symtab->addSymbolWrap<ELFT>(Arg->getValue());<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   // Do link-time optimization if given files are LLVM bitcode files.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   // This compiles bitcode files into real object files.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: lld/trunk/ELF/SymbolTable.cpp<o:p></o:p></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=">
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><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- lld/trunk/ELF/SymbolTable.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ lld/trunk/ELF/SymbolTable.cpp Fri Jun 22 04:18:11 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -158,6 +158,13 @@ template <class ELFT> void SymbolTable::<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   Symbol *Sym = find(Name);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (!Sym)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     return;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  // Do not wrap the same symbol twice.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  if (llvm::find_if(WrappedSymbols, [&](const WrappedSymbol &S) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+        return S.Sym == Sym;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      }) != WrappedSymbols.end())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    return;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   Symbol *Real = addUndefined<ELFT>(Saver.save("__real_" + Name));<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   Symbol *Wrap = addUndefined<ELFT>(Saver.save("__wrap_" + Name));<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   WrappedSymbols.push_back({Sym, Real, Wrap});<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">_______________________________________________<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">llvm-commits mailing list<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><o:p></o:p></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=">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><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
</div>
</body>
</html>