summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine/Orc/Core.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/Core.cpp')
-rw-r--r--llvm/lib/ExecutionEngine/Orc/Core.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/Core.cpp b/llvm/lib/ExecutionEngine/Orc/Core.cpp
index c99c8ec120f..232c880b9dd 100644
--- a/llvm/lib/ExecutionEngine/Orc/Core.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/Core.cpp
@@ -287,6 +287,26 @@ void VSO::finalize(SymbolNameSet SymbolsToFinalize) {
}
}
+VSO::LookupFlagsResult VSO::lookupFlags(SymbolNameSet Names) {
+ SymbolFlagsMap FlagsFound;
+
+ for (SymbolNameSet::iterator I = Names.begin(), E = Names.end(); I != E;) {
+ auto Tmp = I++;
+ auto SymI = Symbols.find(*Tmp);
+
+ // If the symbol isn't in this dylib then just continue.
+ if (SymI == Symbols.end())
+ continue;
+
+ Names.erase(Tmp);
+
+ FlagsFound[SymI->first] =
+ JITSymbolFlags::stripTransientFlags(SymI->second.getFlags());
+ }
+
+ return {std::move(FlagsFound), std::move(Names)};
+}
+
VSO::LookupResult VSO::lookup(AsynchronousSymbolQuery &Query,
SymbolNameSet Names) {
SourceWorkMap MaterializationWork;
OpenPOWER on IntegriCloud