mirror of
https://github.com/intel/llvm.git
synced 2026-01-15 12:25:46 +08:00
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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user