diff options
Diffstat (limited to 'clang/lib/Interpreter/Interpreter.cpp')
-rw-r--r-- | clang/lib/Interpreter/Interpreter.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/clang/lib/Interpreter/Interpreter.cpp b/clang/lib/Interpreter/Interpreter.cpp index 9eed112..b2e7727 100644 --- a/clang/lib/Interpreter/Interpreter.cpp +++ b/clang/lib/Interpreter/Interpreter.cpp @@ -223,11 +223,31 @@ llvm::Error Interpreter::Execute(PartialTranslationUnit &T) { } llvm::Expected<llvm::JITTargetAddress> -Interpreter::getSymbolAddress(llvm::StringRef UnmangledName) const { +Interpreter::getSymbolAddress(GlobalDecl GD) const { + if (!IncrExecutor) + return llvm::make_error<llvm::StringError>("Operation failed. " + "No execution engine", + std::error_code()); + llvm::StringRef MangledName = IncrParser->GetMangledName(GD); + return getSymbolAddress(MangledName); +} + +llvm::Expected<llvm::JITTargetAddress> +Interpreter::getSymbolAddress(llvm::StringRef IRName) const { + if (!IncrExecutor) + return llvm::make_error<llvm::StringError>("Operation failed. " + "No execution engine", + std::error_code()); + + return IncrExecutor->getSymbolAddress(IRName, IncrementalExecutor::IRName); +} + +llvm::Expected<llvm::JITTargetAddress> +Interpreter::getSymbolAddressFromLinkerName(llvm::StringRef Name) const { if (!IncrExecutor) return llvm::make_error<llvm::StringError>("Operation failed. " "No execution engine", std::error_code()); - return IncrExecutor->getSymbolAddress(UnmangledName); + return IncrExecutor->getSymbolAddress(Name, IncrementalExecutor::LinkerName); } |