diff options
author | Sean Callanan <scallanan@apple.com> | 2012-02-15 01:40:39 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2012-02-15 01:40:39 +0000 |
commit | f673e769a6d88eec0e5aeafb45aed36df238723a (patch) | |
tree | 71fdb137b50a6e0828ae5b39215052d49822b114 /lldb/source/Expression/IRInterpreter.cpp | |
parent | 84f454ec5c1e1d255428b26d5c7b2d60bbf1787d (diff) | |
download | bcm5719-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.cpp | 9 |
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()); |