[all-commits] [llvm/llvm-project] 3137fe: [DebugInfo][DAG] Distinguish different kinds of lo...
Jeremy Morse via All-commits
all-commits at lists.llvm.org
Wed Oct 30 11:41:42 PDT 2019
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: 3137fe4d23eeb8df08c03e9111465325eeafe08e
https://github.com/llvm/llvm-project/commit/3137fe4d23eeb8df08c03e9111465325eeafe08e
Author: Jeremy Morse <jeremy.morse at sony.com>
Date: 2019-10-30 (Wed, 30 Oct 2019)
Changed paths:
M llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
A llvm/test/DebugInfo/X86/stack-arg-deref.ll
Log Message:
-----------
[DebugInfo][DAG] Distinguish different kinds of location indirection
>From SelectionDAGs point of view, debug variable locations specified with
dbg.declare and dbg.addr are indirect -- they specify the address of
something. But calling conventions might mean that a Value is placed on
the stack somewhere, and this too is indirection. Previously this was
mixed up in the "IsIndirect" field of DBG_VALUE insts; this patch
separates them by encoding the indirection in a DIExpression.
If we have a dbg.declare or dbg.addr, then the expression produces an
address that then becomes a DWARF memory location. We can represent
this by putting a DW_OP_deref on the _end_ of the expression. If a Value
has been placed on the stack, then we need to put a DW_OP_deref on the
_start_ of the expression, to load the Value from the stack and have
the rest of the expression operate on it.
Differential Revision: https://reviews.llvm.org/D69028
More information about the All-commits
mailing list