diff options
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Interpreter/IncrementalExecutor.cpp | 19 | ||||
-rw-r--r-- | clang/unittests/Interpreter/InterpreterTest.cpp | 12 |
2 files changed, 9 insertions, 22 deletions
diff --git a/clang/lib/Interpreter/IncrementalExecutor.cpp b/clang/lib/Interpreter/IncrementalExecutor.cpp index 2c4dfc9..3f8d606 100644 --- a/clang/lib/Interpreter/IncrementalExecutor.cpp +++ b/clang/lib/Interpreter/IncrementalExecutor.cpp @@ -92,19 +92,12 @@ llvm::Error IncrementalExecutor::runCtors() const { llvm::Expected<llvm::orc::ExecutorAddr> IncrementalExecutor::getSymbolAddress(llvm::StringRef Name, SymbolNameKind NameKind) const { - using namespace llvm::orc; - auto SO = makeJITDylibSearchOrder({&Jit->getMainJITDylib(), - Jit->getPlatformJITDylib().get(), - Jit->getProcessSymbolsJITDylib().get()}); - - ExecutionSession &ES = Jit->getExecutionSession(); - - auto SymOrErr = - ES.lookup(SO, (NameKind == LinkerName) ? ES.intern(Name) - : Jit->mangleAndIntern(Name)); - if (auto Err = SymOrErr.takeError()) - return std::move(Err); - return SymOrErr->getAddress(); + auto Sym = (NameKind == LinkerName) ? Jit->lookupLinkerMangled(Name) + : Jit->lookup(Name); + + if (!Sym) + return Sym.takeError(); + return Sym; } } // end namespace clang diff --git a/clang/unittests/Interpreter/InterpreterTest.cpp b/clang/unittests/Interpreter/InterpreterTest.cpp index 0f546d2..1800bff 100644 --- a/clang/unittests/Interpreter/InterpreterTest.cpp +++ b/clang/unittests/Interpreter/InterpreterTest.cpp @@ -234,16 +234,10 @@ TEST(IncrementalProcessing, FindMangledNameSymbol) { } std::string MangledName = MangleName(FD); - auto Addr = Interp->getSymbolAddress(MangledName); - EXPECT_FALSE(!Addr); - EXPECT_NE(0U, Addr->getValue()); + auto Addr = cantFail(Interp->getSymbolAddress(MangledName)); + EXPECT_NE(0U, Addr.getValue()); GlobalDecl GD(FD); - EXPECT_EQ(*Addr, cantFail(Interp->getSymbolAddress(GD))); - cantFail( - Interp->ParseAndExecute("extern \"C\" int printf(const char*,...);")); - Addr = Interp->getSymbolAddress("printf"); - EXPECT_FALSE(!Addr); - EXPECT_EQ((unsigned long long)&printf, Addr->getValue()); + EXPECT_EQ(Addr, cantFail(Interp->getSymbolAddress(GD))); } static void *AllocateObject(TypeDecl *TD, Interpreter &Interp) { |