forked from OSchip/llvm-project
6aeba89e89
The System-V x86_64 ABI requires floating point values to be passed in 128-but SSE vector registers (xmm0, ...). When printing such a variable this currently yields an <invalid load address>. This patch makes LLDB's DWARF expression evaluator accept 128-bit registers as scalars. It also relaxes the check that the size of the result of the DWARF expression be equal to the size of the variable to a greater-than. DWARF defers to the ABI how smaller values are being placed in a larger register. Implementation note: I found the code in Value::SetContext() that changes the m_value_type after the fact to be questionable. I added a sanity check that the Value's memory buffer has indeed been written to (this is necessary, because we may have a scalar value in a vector register), but really I feel like this is the wrong place to be setting it. Reviewed by Greg Clayton. http://reviews.llvm.org/D17897 rdar://problem/24944340 llvm-svn: 262947 |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
DWARFExpression.cpp | ||
Expression.cpp | ||
ExpressionSourceCode.cpp | ||
ExpressionVariable.cpp | ||
FunctionCaller.cpp | ||
IRDynamicChecks.cpp | ||
IRExecutionUnit.cpp | ||
IRInterpreter.cpp | ||
IRMemoryMap.cpp | ||
LLVMUserExpression.cpp | ||
Materializer.cpp | ||
REPL.cpp | ||
UserExpression.cpp | ||
UtilityFunction.cpp |