aboutsummaryrefslogtreecommitdiff
path: root/llvm/docs/SourceLevelDebugging.rst
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2014-08-01 22:11:58 +0000
committerAdrian Prantl <aprantl@apple.com>2014-08-01 22:11:58 +0000
commitb1416837f97cd1ec212673fb90fab0fb7df6c442 (patch)
tree22c532dbd53626600d03903704c6911f00e3d9af /llvm/docs/SourceLevelDebugging.rst
parent4184c79975256bbb9d3eec1622b99361770a6644 (diff)
downloadllvm-b1416837f97cd1ec212673fb90fab0fb7df6c442.zip
llvm-b1416837f97cd1ec212673fb90fab0fb7df6c442.tar.gz
llvm-b1416837f97cd1ec212673fb90fab0fb7df6c442.tar.bz2
Debug info: Infrastructure to support debug locations for fragmented
variables (for example, by-value struct arguments passed in registers, or large integer values split across several smaller registers). On the IR level, this adds a new type of complex address operation OpPiece to DIVariable that describes size and offset of a variable fragment. On the DWARF emitter level, all pieces describing the same variable are collected, sorted and emitted as DWARF expressions using the DW_OP_piece and DW_OP_bit_piece operators. http://reviews.llvm.org/D3373 rdar://problem/15928306 What this patch doesn't do / Future work: - This patch only adds the backend machinery to make this work, patches that change SROA and SelectionDAG's type legalizer to actually create such debug info will follow. (http://reviews.llvm.org/D2680) - Making the DIVariable complex expressions into an argument of dbg.value will reduce the memory footprint of the debug metadata. - The sorting/uniquing of pieces should be moved into DebugLocEntry, to facilitate the merging of multi-piece entries. llvm-svn: 214576
Diffstat (limited to 'llvm/docs/SourceLevelDebugging.rst')
-rw-r--r--llvm/docs/SourceLevelDebugging.rst6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/docs/SourceLevelDebugging.rst b/llvm/docs/SourceLevelDebugging.rst
index 869d3a3..a47378e 100644
--- a/llvm/docs/SourceLevelDebugging.rst
+++ b/llvm/docs/SourceLevelDebugging.rst
@@ -589,6 +589,12 @@ The context is either the subprogram or block where the variable is defined.
Name the source variable name. Context and line indicate where the variable
was defined. Type descriptor defines the declared type of the variable.
+The ``OpPiece`` operator is used for (typically larger aggregate)
+variables that are fragmented across several locations. It takes two
+i32 arguments, an offset and a size in bytes to describe which piece
+of the variable is at this location.
+
+
.. _format_common_intrinsics:
Debugger intrinsic functions