diff options
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/Core.cpp | 21 | ||||
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/Legacy.cpp | 3 | ||||
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/NullResolver.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h | 13 | ||||
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h | 14 | ||||
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.cpp | 2 |
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; |