[lld] r218548 - Fix crash bug on Windows.

Rui Ueyama ruiu at google.com
Fri Sep 26 16:29:18 PDT 2014


Didn't know DenseMap had that member function. Thanks.

On Fri, Sep 26, 2014 at 4:21 PM, Duncan P. N. Exon Smith <
dexonsmith at apple.com> wrote:

>
> > On Sep 26, 2014, at 3:27 PM, Rui Ueyama <ruiu at google.com> wrote:
> >
> > Author: ruiu
> > Date: Fri Sep 26 17:27:42 2014
> > New Revision: 218548
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=218548&view=rev
> > Log:
> > Fix crash bug on Windows.
> >
> > Mutating the DenseMap here seems to cause the Windows executable
> > to crash. Don't use operator[] to access possibly nonexistent key.
> >
> > Modified:
> >    lld/trunk/lib/Core/Resolver.cpp
> >
> > Modified: lld/trunk/lib/Core/Resolver.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Core/Resolver.cpp?rev=218548&r1=218547&r2=218548&view=diff
> >
> ==============================================================================
> > --- lld/trunk/lib/Core/Resolver.cpp (original)
> > +++ lld/trunk/lib/Core/Resolver.cpp Fri Sep 26 17:27:42 2014
> > @@ -305,8 +305,10 @@ void Resolver::markLive(const Atom *atom
> >   if (const DefinedAtom *defAtom = dyn_cast<DefinedAtom>(atom)) {
> >     for (const Reference *ref : *defAtom)
> >       markLive(ref->target());
> > -    for (const Atom *target : _reverseRef[defAtom])
> > -      markLive(target);
> > +    auto it = _reverseRef.find(defAtom);
> > +    if (it != _reverseRef.end())
> > +      for (const Atom *target : it->second)
> > +        markLive(target);
>
> Should this just be:
>
>     for (const Atom *target : _reverseRef.lookup(defAtom))
>       markLive(target);
>
> ?
>
> >   }
> > }
> >
> >
> >
> > _______________________________________________
> > 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/20140926/91d561af/attachment.html>


More information about the llvm-commits mailing list