summaryrefslogtreecommitdiffstats
path: root/lldb/source/Expression/IRInterpreter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Expression/IRInterpreter.cpp')
-rw-r--r--lldb/source/Expression/IRInterpreter.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/lldb/source/Expression/IRInterpreter.cpp b/lldb/source/Expression/IRInterpreter.cpp
index 366a11526d2..b3c35bf8e9a 100644
--- a/lldb/source/Expression/IRInterpreter.cpp
+++ b/lldb/source/Expression/IRInterpreter.cpp
@@ -409,6 +409,7 @@ public:
};
static const char *unsupported_opcode_error = "Interpreter doesn't handle one of the expression's opcodes";
+static const char *unsupported_operand_error = "Interpreter doesn't handle one of the expression's operands";
//static const char *interpreter_initialization_error = "Interpreter couldn't be initialized";
static const char *interpreter_internal_error = "Interpreter encountered an internal error";
static const char *bad_value_error = "Interpreter couldn't resolve a value during execution";
@@ -505,7 +506,29 @@ IRInterpreter::CanInterpret (llvm::Module &module,
case Instruction::ZExt:
break;
}
+
+ for (int oi = 0, oe = ii->getNumOperands();
+ oi != oe;
+ ++oi)
+ {
+ Value *operand = ii->getOperand(oi);
+ Type *operand_type = operand->getType();
+
+ switch (operand_type->getTypeID())
+ {
+ default:
+ break;
+ case Type::VectorTyID:
+ {
+ if (log)
+ log->Printf("Unsupported operand type: %s", PrintType(operand_type).c_str());
+ error.SetErrorString(unsupported_operand_error);
+ return false;
+ }
+ }
+ }
}
+
}
return true;}
OpenPOWER on IntegriCloud