aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Interpreter/Interpreter.cpp
diff options
context:
space:
mode:
authorVassil Vassilev <v.g.vassilev@gmail.com>2021-08-30 16:31:54 +0000
committerVassil Vassilev <v.g.vassilev@gmail.com>2021-11-10 12:52:05 +0000
commit4fb0805c6525b13e50067b9ddfe8677a0b7b2d7c (patch)
treed3213232c232b5acaa6725d98d6b6698070aa9ef /clang/lib/Interpreter/Interpreter.cpp
parent81c99c5404c1aa92eadb7fb93dbeaae7bfaa5195 (diff)
downloadllvm-4fb0805c6525b13e50067b9ddfe8677a0b7b2d7c.zip
llvm-4fb0805c6525b13e50067b9ddfe8677a0b7b2d7c.tar.gz
llvm-4fb0805c6525b13e50067b9ddfe8677a0b7b2d7c.tar.bz2
[clang-repl] Allow Interpreter::getSymbolAddress to take a mangled name.
Diffstat (limited to 'clang/lib/Interpreter/Interpreter.cpp')
-rw-r--r--clang/lib/Interpreter/Interpreter.cpp24
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);
}