forked from OSchip/llvm-project
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:
parent
3411f2ea68
commit
d1a5e01ff9
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue