HomePhabricator

Debug info: Infrastructure to support debug locations for fragmented

Description

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.

Details

Committed
adrianAug 1 2014, 3:11 PM
Parents
rL214575: Don't hand compute mydir, do it using "TestBase.compute_mydir(__file__)".
Branches
Unknown
Tags
Unknown

Event Timeline