llvm-project/lldb/source/Expression
Adrian Prantl 6aeba89e89 Support floating point values in 128-bit SSE vector registers
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
2016-03-08 18:35:09 +00:00
..
CMakeLists.txt Create an expression parser for Go. 2015-11-02 19:30:40 +00:00
DWARFExpression.cpp DWARFExpression: Don't resolve load address in DW_OP_plus 2016-03-01 15:01:05 +00:00
Expression.cpp This patch makes Clang-independent base classes for all the expression types that lldb currently vends. 2015-09-15 21:13:50 +00:00
ExpressionSourceCode.cpp Take 2: Use an artifical namespace so that member vars do not hide local vars. 2016-02-05 19:10:04 +00:00
ExpressionVariable.cpp Now persistent expression data no longer lives with the Target, but rather with 2015-09-30 19:57:57 +00:00
FunctionCaller.cpp Moved more Clang-specific parts of the expression parser into the Clang plugin. 2015-09-25 20:35:58 +00:00
IRDynamicChecks.cpp Removed many JIT workarounds from IRForTarget. 2016-02-13 00:01:46 +00:00
IRExecutionUnit.cpp Fix warning in IRExecutionUnit.cpp 2016-03-04 11:26:56 +00:00
IRInterpreter.cpp Fix bug with function resolution when using IR Interpreter 2016-03-01 21:53:26 +00:00
IRMemoryMap.cpp Fix all of the unannotated switch cases to annotate the fall through or do the right thing and break. 2016-02-26 01:20:20 +00:00
LLVMUserExpression.cpp Fix bug with function resolution when using IR Interpreter 2016-03-01 21:53:26 +00:00
Materializer.cpp Support floating point values in 128-bit SSE vector registers 2016-03-08 18:35:09 +00:00
REPL.cpp Add -Wimplicit-fallthrough command line option to clang in 2016-02-16 04:14:33 +00:00
UserExpression.cpp Add the ability to pass an EvaluateExpressionOptions when you make a UserExpression. This 2015-11-03 02:11:24 +00:00
UtilityFunction.cpp Reduce header inclusion in Expression. 2015-10-07 17:22:54 +00:00