<p dir="ltr"><br>
On Jul 3, 2015 4:25 PM, "Rui Ueyama" <<a href="mailto:ruiu@google.com">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=sSSeQB8ixCkXnErbuTTmosJOQuFM1f2qLe5PY5zpeLI&s=uCCiq0Gd6RFy8LKkRGVyG1ZWrBctD2k81NxCp5Wk4Hs&e=">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=sSSeQB8ixCkXnErbuTTmosJOQuFM1f2qLe5PY5zpeLI&s=VVvdtxDCB_Rwo_FBrA144g7McMipLN6T5jl9tHsR86A&e=">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>
<p dir="ltr">Drop the redundant parens around the expression?</p>
<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=sSSeQB8ixCkXnErbuTTmosJOQuFM1f2qLe5PY5zpeLI&s=xy8L1xe_MwJyp7jQcmO8bYReDNNbZc-Far8gp4wtxZk&e=">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>
<p dir="ltr">Use insert (and check the result) to avoid two map lookups (of find+insert)?</p>
<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=sSSeQB8ixCkXnErbuTTmosJOQuFM1f2qLe5PY5zpeLI&s=NSxFbqiXWRPdBhvjeRL_yOuuSOyVaogNE8Xiq5sekQ0&e=">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">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</p>