summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine/Orc
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc')
-rw-r--r--llvm/lib/ExecutionEngine/Orc/Core.cpp21
-rw-r--r--llvm/lib/ExecutionEngine/Orc/Legacy.cpp3
-rw-r--r--llvm/lib/ExecutionEngine/Orc/NullResolver.cpp5
-rw-r--r--llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h13
-rw-r--r--llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h14
-rw-r--r--llvm/lib/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.cpp2
6 files changed, 27 insertions, 31 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/Core.cpp b/llvm/lib/ExecutionEngine/Orc/Core.cpp
index 9275bb84d01..65f11782288 100644
--- a/llvm/lib/ExecutionEngine/Orc/Core.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/Core.cpp
@@ -522,11 +522,14 @@ ReExportsMaterializationUnit::extractFlags(const SymbolAliasMap &Aliases) {
Expected<SymbolAliasMap>
buildSimpleReexportsAliasMap(VSO &SourceV, const SymbolNameSet &Symbols) {
- SymbolFlagsMap Flags;
- auto Unresolved = SourceV.lookupFlags(Flags, Symbols);
+ auto Flags = SourceV.lookupFlags(Symbols);
- if (!Unresolved.empty())
+ if (Flags.size() != Symbols.size()) {
+ SymbolNameSet Unresolved = Symbols;
+ for (auto &KV : Flags)
+ Unresolved.erase(KV.first);
return make_error<SymbolsNotFound>(std::move(Unresolved));
+ }
SymbolAliasMap Result;
for (auto &Name : Symbols) {
@@ -900,22 +903,20 @@ void VSO::removeFromSearchOrder(VSO &V) {
});
}
-SymbolNameSet VSO::lookupFlags(SymbolFlagsMap &Flags,
- const SymbolNameSet &Names) {
+SymbolFlagsMap VSO::lookupFlags(const SymbolNameSet &Names) {
return ES.runSessionLocked([&, this]() {
- auto Unresolved = lookupFlagsImpl(Flags, Names);
+ SymbolFlagsMap Result;
+ auto Unresolved = lookupFlagsImpl(Result, Names);
if (FallbackDefinitionGenerator && !Unresolved.empty()) {
auto FallbackDefs = FallbackDefinitionGenerator(*this, Unresolved);
if (!FallbackDefs.empty()) {
- auto Unresolved2 = lookupFlagsImpl(Flags, FallbackDefs);
+ auto Unresolved2 = lookupFlagsImpl(Result, FallbackDefs);
(void)Unresolved2;
assert(Unresolved2.empty() &&
"All fallback defs should have been found by lookupFlagsImpl");
- for (auto &D : FallbackDefs)
- Unresolved.erase(D);
}
};
- return Unresolved;
+ return Result;
});
}
diff --git a/llvm/lib/ExecutionEngine/Orc/Legacy.cpp b/llvm/lib/ExecutionEngine/Orc/Legacy.cpp
index 79525baf92e..6fde6898a16 100644
--- a/llvm/lib/ExecutionEngine/Orc/Legacy.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/Legacy.cpp
@@ -48,8 +48,7 @@ JITSymbolResolverAdapter::lookupFlags(const LookupSet &Symbols) {
for (auto &S : Symbols)
InternedSymbols.insert(ES.getSymbolStringPool().intern(S));
- SymbolFlagsMap SymbolFlags;
- R.lookupFlags(SymbolFlags, InternedSymbols);
+ SymbolFlagsMap SymbolFlags = R.lookupFlags(InternedSymbols);
LookupFlagsResult Result;
for (auto &KV : SymbolFlags) {
ResolvedStrings.insert(KV.first);
diff --git a/llvm/lib/ExecutionEngine/Orc/NullResolver.cpp b/llvm/lib/ExecutionEngine/Orc/NullResolver.cpp
index 872efea5fc8..3796e3d37bc 100644
--- a/llvm/lib/ExecutionEngine/Orc/NullResolver.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/NullResolver.cpp
@@ -14,9 +14,8 @@
namespace llvm {
namespace orc {
-SymbolNameSet NullResolver::lookupFlags(SymbolFlagsMap &Flags,
- const SymbolNameSet &Symbols) {
- return Symbols;
+SymbolFlagsMap NullResolver::lookupFlags(const SymbolNameSet &Symbols) {
+ return SymbolFlagsMap();
}
SymbolNameSet
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h b/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h
index aa63957236e..6c44f4367ec 100644
--- a/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h
+++ b/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h
@@ -129,21 +129,20 @@ private:
: Stack(Stack), ExternalResolver(std::move(ExternalResolver)),
ExternalResolverCtx(std::move(ExternalResolverCtx)) {}
- orc::SymbolNameSet lookupFlags(orc::SymbolFlagsMap &SymbolFlags,
- const orc::SymbolNameSet &Symbols) override {
- orc::SymbolNameSet SymbolsNotFound;
+ orc::SymbolFlagsMap
+ lookupFlags(const orc::SymbolNameSet &Symbols) override {
+ orc::SymbolFlagsMap SymbolFlags;
for (auto &S : Symbols) {
if (auto Sym = findSymbol(*S))
SymbolFlags[S] = Sym.getFlags();
else if (auto Err = Sym.takeError()) {
Stack.reportError(std::move(Err));
- return orc::SymbolNameSet();
- } else
- SymbolsNotFound.insert(S);
+ return orc::SymbolFlagsMap();
+ }
}
- return SymbolsNotFound;
+ return SymbolFlags;
}
orc::SymbolNameSet
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h b/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
index 922ec476204..ded53ac3106 100644
--- a/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
+++ b/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
@@ -144,28 +144,26 @@ class OrcMCJITReplacement : public ExecutionEngine {
public:
LinkingORCResolver(OrcMCJITReplacement &M) : M(M) {}
- SymbolNameSet lookupFlags(SymbolFlagsMap &SymbolFlags,
- const SymbolNameSet &Symbols) override {
- SymbolNameSet UnresolvedSymbols;
+ SymbolFlagsMap lookupFlags(const SymbolNameSet &Symbols) override {
+ SymbolFlagsMap SymbolFlags;
for (auto &S : Symbols) {
if (auto Sym = M.findMangledSymbol(*S)) {
SymbolFlags[S] = Sym.getFlags();
} else if (auto Err = Sym.takeError()) {
M.reportError(std::move(Err));
- return SymbolNameSet();
+ return SymbolFlagsMap();
} else {
if (auto Sym2 = M.ClientResolver->findSymbolInLogicalDylib(*S)) {
SymbolFlags[S] = Sym2.getFlags();
} else if (auto Err = Sym2.takeError()) {
M.reportError(std::move(Err));
- return SymbolNameSet();
- } else
- UnresolvedSymbols.insert(S);
+ return SymbolFlagsMap();
+ }
}
}
- return UnresolvedSymbols;
+ return SymbolFlags;
}
SymbolNameSet lookup(std::shared_ptr<AsynchronousSymbolQuery> Query,
diff --git a/llvm/lib/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.cpp b/llvm/lib/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.cpp
index 8c53b4f58de..7cdc6b352d1 100644
--- a/llvm/lib/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.cpp
@@ -64,7 +64,7 @@ public:
return;
assert(VSOs.front() && "VSOList entry can not be null");
- VSOs.front()->lookupFlags(InternedResult, InternedSymbols);
+ InternedResult = VSOs.front()->lookupFlags(InternedSymbols);
});
LookupFlagsResult Result;
OpenPOWER on IntegriCloud