summaryrefslogtreecommitdiffstats
path: root/lld/lib/Core/Resolver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lld/lib/Core/Resolver.cpp')
-rw-r--r--lld/lib/Core/Resolver.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/lld/lib/Core/Resolver.cpp b/lld/lib/Core/Resolver.cpp
index 53cb6e88cd3..9ce948d4b25 100644
--- a/lld/lib/Core/Resolver.cpp
+++ b/lld/lib/Core/Resolver.cpp
@@ -17,12 +17,14 @@
#include "lld/Core/SharedLibraryFile.h"
#include "lld/Core/SymbolTable.h"
#include "lld/Core/UndefinedAtom.h"
+#include "llvm/ADT/iterator_range.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
+#include <utility>
#include <vector>
namespace lld {
@@ -372,8 +374,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.lookup(defAtom))
+ for (auto &p : llvm::make_range(_reverseRef.equal_range(defAtom))) {
+ const Atom *target = p.second;
markLive(target);
+ }
}
}
@@ -399,7 +403,7 @@ void Resolver::deadStripOptimize() {
if (const DefinedAtom *defAtom = dyn_cast<DefinedAtom>(atom))
for (const Reference *ref : *defAtom)
if (isBackref(ref))
- _reverseRef[ref->target()].insert(atom);
+ _reverseRef.insert(std::make_pair(ref->target(), atom));
if (const AbsoluteAtom *absAtom = dyn_cast<AbsoluteAtom>(atom))
markLive(absAtom);
}
OpenPOWER on IntegriCloud