[lld] r241379 - COFF: Don't print warning message for identical /export options.

Rui Ueyama ruiu at google.com
Fri Jul 3 19:00:56 PDT 2015


Yeah, that would be better. Addressed in r241385.

On Fri, Jul 3, 2015 at 5:56 PM, David Blaikie <dblaikie at gmail.com> wrote:

>
> On Jul 3, 2015 4:25 PM, "Rui Ueyama" <ruiu at google.com> wrote:
> >
> > Author: ruiu
> > Date: Fri Jul  3 18:23:29 2015
> > New Revision: 241379
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=241379&view=rev
> > Log:
> > COFF: Don't print warning message for identical /export options.
> >
> > Modified:
> >     lld/trunk/COFF/Config.h
> >     lld/trunk/COFF/DriverUtils.cpp
> >     lld/trunk/test/COFF/export.test
> >
> > Modified: lld/trunk/COFF/Config.h
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Config.h?rev=241379&r1=241378&r2=241379&view=diff
> >
> ==============================================================================
> > --- lld/trunk/COFF/Config.h (original)
> > +++ lld/trunk/COFF/Config.h Fri Jul  3 18:23:29 2015
> > @@ -33,6 +33,12 @@ struct Export {
> >    bool Noname = false;
> >    bool Data = false;
> >    bool Private = false;
> > +
> > +  bool operator==(const Export &E) {
> > +    return (Name == E.Name && ExtName == E.ExtName &&
> > +            Ordinal == E.Ordinal && Noname == E.Noname &&
> > +            Data == E.Data && Private == E.Private);
>
> Drop the redundant parens around the expression?
>
> > +  }
> >  };
> >
> >  // Global configuration.
> >
> > Modified: lld/trunk/COFF/DriverUtils.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/DriverUtils.cpp?rev=241379&r1=241378&r2=241379&view=diff
> >
> ==============================================================================
> > --- lld/trunk/COFF/DriverUtils.cpp (original)
> > +++ lld/trunk/COFF/DriverUtils.cpp Fri Jul  3 18:23:29 2015
> > @@ -396,14 +396,19 @@ std::error_code fixupExports() {
> >    }
> >
> >    // Uniquefy by name.
> > -  std::set<StringRef> Names;
> > +  std::map<StringRef, Export *> Map;
> >    std::vector<Export> V;
> >    for (Export &E : Config->Exports) {
> > -    if (!Names.insert(E.Name).second) {
> > -      llvm::errs() << "warning: duplicate /export option: " << E.Name
> << "\n";
> > +    auto It = Map.find(E.Name);
> > +    if (It == Map.end()) {
> > +      Map.insert(It, std::make_pair(E.Name, &E));
>
> Use insert (and check the result) to avoid two map lookups (of
> find+insert)?
>
> > +      V.push_back(E);
> >        continue;
> >      }
> > -    V.push_back(E);
> > +    if (E == *It->second)
> > +      continue;
> > +    llvm::errs() << "warning: duplicate /export option: " << E.Name <<
> "\n";
> > +    continue;
> >    }
> >    Config->Exports = std::move(V);
> >
> >
> > Modified: lld/trunk/test/COFF/export.test
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/export.test?rev=241379&r1=241378&r2=241379&view=diff
> >
> ==============================================================================
> > --- lld/trunk/test/COFF/export.test (original)
> > +++ lld/trunk/test/COFF/export.test Fri Jul  3 18:23:29 2015
> > @@ -63,3 +63,10 @@ CHECK5-NEXT:       1        0
> >  CHECK5-NEXT:       2   0x1010  fn2
> >  CHECK5-NEXT:       3   0x1008  exportfn1
> >  CHECK5-NEXT:       4   0x1010  exportfn3
> > +
> > +# RUN: lld -flavor link2 /out:%t.dll /dll %t.obj /export:exportfn1
> /export:exportfn2 \
> > +# RUN:   /export:exportfn1 /export:exportfn2, at 5 >& %t.log
> > +# RUN: FileCheck -check-prefix=CHECK6 %s < %t.log
> > +
> > +CHECK6:     duplicate /export option: exportfn2
> > +CHECK6-NOT: duplicate /export option: exportfn1
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150703/188e3680/attachment.html>


More information about the llvm-commits mailing list