Fixed a bug where the DWARF location expression
authorSean Callanan <scallanan@apple.com>
Fri, 6 Jan 2012 18:24:47 +0000 (18:24 +0000)
committerSean Callanan <scallanan@apple.com>
Fri, 6 Jan 2012 18:24:47 +0000 (18:24 +0000)
parser was creating malformed resuls.  When the
location of a variable is computed by reading a
register and adding an offset, we shouldn't say
that the variable's value is located in that
register.  This was confusing the expression
parser when trying to read a variable captured
by a block.

llvm-svn: 147668

lldb/source/Expression/DWARFExpression.cpp

index 3555c41..88ce130 100644 (file)
@@ -2433,6 +2433,7 @@ DWARFExpression::Evaluate
                 {
                     int64_t breg_offset = opcodes.GetSLEB128(&offset);
                     tmp.ResolveValue(exe_ctx, ast_context) += (uint64_t)breg_offset;
+                    tmp.ClearContext();
                     stack.push_back(tmp);
                     stack.back().SetValueType (Value::eValueTypeLoadAddress);
                 }
@@ -2456,6 +2457,7 @@ DWARFExpression::Evaluate
                 {
                     int64_t breg_offset = opcodes.GetSLEB128(&offset);
                     tmp.ResolveValue(exe_ctx, ast_context) += (uint64_t)breg_offset;
+                    tmp.ClearContext();
                     stack.push_back(tmp);
                     stack.back().SetValueType (Value::eValueTypeLoadAddress);
                 }