summaryrefslogtreecommitdiffstats
path: root/lldb/source/Expression
diff options
context:
space:
mode:
authorDavide Italiano <davide@freebsd.org>2018-09-14 18:55:31 +0000
committerDavide Italiano <davide@freebsd.org>2018-09-14 18:55:31 +0000
commit5f6789ef6e40a52451dda715839f24b75dfadfc2 (patch)
tree36bc037d2658865871280866b138dbeda8197e9b /lldb/source/Expression
parent0be9c4e8d63b7d8cf02c8c8aae375277b20cd1ac (diff)
downloadbcm5719-llvm-5f6789ef6e40a52451dda715839f24b75dfadfc2.tar.gz
bcm5719-llvm-5f6789ef6e40a52451dda715839f24b75dfadfc2.zip
[IRInterpreter] Fall back to JIT with 128-bit values.
They're not that common, and falling back is definitely better than throwing an error instead of the result. If we feel motivated, we might end up implementing support for these, but it's unclear whether it's worth the effort/complexity. Fixes PR38925. <rdar://problem/44436068> llvm-svn: 342262
Diffstat (limited to 'lldb/source/Expression')
-rw-r--r--lldb/source/Expression/IRInterpreter.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/lldb/source/Expression/IRInterpreter.cpp b/lldb/source/Expression/IRInterpreter.cpp
index 990646da045..2c08d098b4d 100644
--- a/lldb/source/Expression/IRInterpreter.cpp
+++ b/lldb/source/Expression/IRInterpreter.cpp
@@ -613,6 +613,18 @@ bool IRInterpreter::CanInterpret(llvm::Module &module, llvm::Function &function,
}
}
+ // The IR interpreter currently doesn't know about
+ // 128-bit integers. As they're not that frequent,
+ // we can just fall back to the JIT rather than
+ // choking.
+ if (operand_type->getPrimitiveSizeInBits() > 64) {
+ if (log)
+ log->Printf("Unsupported operand type: %s",
+ PrintType(operand_type).c_str());
+ error.SetErrorString(unsupported_operand_error);
+ return false;
+ }
+
if (Constant *constant = llvm::dyn_cast<Constant>(operand)) {
if (!CanResolveConstant(constant)) {
if (log)
OpenPOWER on IntegriCloud