diff options
author | Rui Ueyama <ruiu@google.com> | 2014-09-26 22:27:42 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2014-09-26 22:27:42 +0000 |
commit | b774a0e75071f4b32e741297b4e017615b01a8a9 (patch) | |
tree | 2f2b3606c0de58061d56c891c22bf29a16b66941 | |
parent | abce3c4e180f0923f973e28f20cb9d7782d09546 (diff) | |
download | bcm5719-llvm-b774a0e75071f4b32e741297b4e017615b01a8a9.tar.gz bcm5719-llvm-b774a0e75071f4b32e741297b4e017615b01a8a9.zip |
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.
llvm-svn: 218548
-rw-r--r-- | lld/lib/Core/Resolver.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lld/lib/Core/Resolver.cpp b/lld/lib/Core/Resolver.cpp index ba1f67cc8e7..eb445ff0365 100644 --- a/lld/lib/Core/Resolver.cpp +++ b/lld/lib/Core/Resolver.cpp @@ -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); } } |