<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>