<div dir="ltr">Yeah, that would be better. Addressed in <span style="color:rgb(0,0,0)">r241385.</span></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jul 3, 2015 at 5:56 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5"><p dir="ltr"><br>
On Jul 3, 2015 4:25 PM, "Rui Ueyama" <<a href="mailto:ruiu@google.com" target="_blank">ruiu@google.com</a>> wrote:<br>
><br>
> Author: ruiu<br>
> Date: Fri Jul  3 18:23:29 2015<br>
> New Revision: 241379<br>
><br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D241379-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=WBoK6-8r7n0PiZLk8QPvNHVIKizPr6fnbH7kCrnNC7w&s=eyfO5vV8DMm4xQNWsHL0v3ZF80mKEBXyKflu9_kRxxE&e=" target="_blank">http://llvm.org/viewvc/llvm-project?rev=241379&view=rev</a><br>
> Log:<br>
> COFF: Don't print warning message for identical /export options.<br>
><br>
> Modified:<br>
>     lld/trunk/COFF/Config.h<br>
>     lld/trunk/COFF/DriverUtils.cpp<br>
>     lld/trunk/test/COFF/export.test<br>
><br>
> Modified: lld/trunk/COFF/Config.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_COFF_Config.h-3Frev-3D241379-26r1-3D241378-26r2-3D241379-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=WBoK6-8r7n0PiZLk8QPvNHVIKizPr6fnbH7kCrnNC7w&s=tIuRaPjqdmXGDqQ5tHbBZgqlGo1tUE4MoZs36CXhesE&e=" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Config.h?rev=241379&r1=241378&r2=241379&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/COFF/Config.h (original)<br>
> +++ lld/trunk/COFF/Config.h Fri Jul  3 18:23:29 2015<br>
> @@ -33,6 +33,12 @@ struct Export {<br>
>    bool Noname = false;<br>
>    bool Data = false;<br>
>    bool Private = false;<br>
> +<br>
> +  bool operator==(const Export &E) {<br>
> +    return (Name == E.Name && ExtName == E.ExtName &&<br>
> +            Ordinal == E.Ordinal && Noname == E.Noname &&<br>
> +            Data == E.Data && Private == E.Private);</p>
</div></div><p dir="ltr">Drop the redundant parens around the expression?</p><span class="">
<p dir="ltr">> +  }<br>
>  };<br>
><br>
>  // Global configuration.<br>
><br>
> Modified: lld/trunk/COFF/DriverUtils.cpp<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_COFF_DriverUtils.cpp-3Frev-3D241379-26r1-3D241378-26r2-3D241379-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=WBoK6-8r7n0PiZLk8QPvNHVIKizPr6fnbH7kCrnNC7w&s=6cUOoAnxf9dRIJRH-Vc21dwr44U11PqrFBnqpVkHW-M&e=" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/DriverUtils.cpp?rev=241379&r1=241378&r2=241379&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/COFF/DriverUtils.cpp (original)<br>
> +++ lld/trunk/COFF/DriverUtils.cpp Fri Jul  3 18:23:29 2015<br>
> @@ -396,14 +396,19 @@ std::error_code fixupExports() {<br>
>    }<br>
><br>
>    // Uniquefy by name.<br>
> -  std::set<StringRef> Names;<br>
> +  std::map<StringRef, Export *> Map;<br>
>    std::vector<Export> V;<br>
>    for (Export &E : Config->Exports) {<br>
> -    if (!Names.insert(E.Name).second) {<br>
> -      llvm::errs() << "warning: duplicate /export option: " << E.Name << "\n";<br>
> +    auto It = Map.find(E.Name);<br>
> +    if (It == Map.end()) {<br>
> +      Map.insert(It, std::make_pair(E.Name, &E));</p>
</span><p dir="ltr">Use insert (and check the result) to avoid two map lookups (of find+insert)?</p><div class="HOEnZb"><div class="h5">
<p dir="ltr">> +      V.push_back(E);<br>
>        continue;<br>
>      }<br>
> -    V.push_back(E);<br>
> +    if (E == *It->second)<br>
> +      continue;<br>
> +    llvm::errs() << "warning: duplicate /export option: " << E.Name << "\n";<br>
> +    continue;<br>
>    }<br>
>    Config->Exports = std::move(V);<br>
><br>
><br>
> Modified: lld/trunk/test/COFF/export.test<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_test_COFF_export.test-3Frev-3D241379-26r1-3D241378-26r2-3D241379-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=WBoK6-8r7n0PiZLk8QPvNHVIKizPr6fnbH7kCrnNC7w&s=QJudD8s6Lh3IfVak-8oQ72l0hivRTot1aeQFsDGaCH4&e=" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/export.test?rev=241379&r1=241378&r2=241379&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/test/COFF/export.test (original)<br>
> +++ lld/trunk/test/COFF/export.test Fri Jul  3 18:23:29 2015<br>
> @@ -63,3 +63,10 @@ CHECK5-NEXT:       1        0<br>
>  CHECK5-NEXT:       2   0x1010  fn2<br>
>  CHECK5-NEXT:       3   0x1008  exportfn1<br>
>  CHECK5-NEXT:       4   0x1010  exportfn3<br>
> +<br>
> +# RUN: lld -flavor link2 /out:%t.dll /dll %t.obj /export:exportfn1 /export:exportfn2 \<br>
> +# RUN:   /export:exportfn1 /export:exportfn2,@5 >& %t.log<br>
> +# RUN: FileCheck -check-prefix=CHECK6 %s < %t.log<br>
> +<br>
> +CHECK6:     duplicate /export option: exportfn2<br>
> +CHECK6-NOT: duplicate /export option: exportfn1<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</p>
</div></div></blockquote></div><br></div>