Fixed a bug where the DWARF location expression

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
This commit is contained in:
Sean Callanan 2012-01-06 18:24:47 +00:00
parent 3411f2ea68
commit d1a5e01ff9
1 changed files with 2 additions and 0 deletions

View 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);
}