summaryrefslogtreecommitdiffstats
path: root/lldb/source/Expression/IRInterpreter.cpp
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2012-02-15 01:40:39 +0000
committerSean Callanan <scallanan@apple.com>2012-02-15 01:40:39 +0000
commitf673e769a6d88eec0e5aeafb45aed36df238723a (patch)
tree71fdb137b50a6e0828ae5b39215052d49822b114 /lldb/source/Expression/IRInterpreter.cpp
parent84f454ec5c1e1d255428b26d5c7b2d60bbf1787d (diff)
downloadbcm5719-llvm-f673e769a6d88eec0e5aeafb45aed36df238723a.tar.gz
bcm5719-llvm-f673e769a6d88eec0e5aeafb45aed36df238723a.zip
Previoously the expression parser had to rely on the
JIT when printing the values of registers (e.g., "expr $pc"). Now the expression parser can do this in the IR interpreter without running code in the inferior process. llvm-svn: 150554
Diffstat (limited to 'lldb/source/Expression/IRInterpreter.cpp')
-rw-r--r--lldb/source/Expression/IRInterpreter.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/lldb/source/Expression/IRInterpreter.cpp b/lldb/source/Expression/IRInterpreter.cpp
index b74251ef713..4656730ed92 100644
--- a/lldb/source/Expression/IRInterpreter.cpp
+++ b/lldb/source/Expression/IRInterpreter.cpp
@@ -11,6 +11,7 @@
#include "lldb/Core/Log.h"
#include "lldb/Core/ValueObjectConstResult.h"
#include "lldb/Expression/ClangExpressionDeclMap.h"
+#include "lldb/Expression/ClangExpressionVariable.h"
#include "lldb/Expression/IRForTarget.h"
#include "lldb/Expression/IRInterpreter.h"
@@ -633,6 +634,7 @@ public:
lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
lldb_private::Value resolved_value;
+ lldb_private::ClangExpressionVariable::FlagType flags;
if (global_value)
{
@@ -649,7 +651,7 @@ public:
return Memory::Region();
}
- resolved_value = m_decl_map.LookupDecl(decl);
+ resolved_value = m_decl_map.LookupDecl(decl, flags);
}
else
{
@@ -669,6 +671,11 @@ public:
{
if (resolved_value.GetContextType() == lldb_private::Value::eContextTypeRegisterInfo)
{
+ bool bare_register = (flags & lldb_private::ClangExpressionVariable::EVBareRegister);
+
+ if (bare_register)
+ indirect_variable = false;
+
Memory::Region data_region = m_memory.Malloc(value->getType());
data_region.m_allocation->m_origin = resolved_value;
Memory::Region ref_region = m_memory.Malloc(value->getType());
OpenPOWER on IntegriCloud