> This patch adds DW_AT_const_value or DW_AT_location for unused static vars > (thus, not really modified and their DECL_INITIAL can be used for > location/constant value info), and optimizes various cases using > DW_OP_GNU_implicit_pointer (e.g. DW_OP_addr <symbol> DW_OP_stack_value > where symbol is either an optimized away static var (but with DW_AT_location > or DW_AT_const_value on it's DIE), which would be otherwise dropped > to avoid referencing non-existent symbol, can be replaced with > DW_OP_GNU_implicit_pointer to that DIE. Or, if symbol above is a constant > string > literal, we can create DW_TAG_dwarf_procedure with DW_AT_location > DW_OP_implicit_value (and, surprisingly, GDB handles that out of the box). > > In cc1plus .debug_loc grew with this by about 3% and .debug_info grew by > 0.25%, in libstdc++ the changes were in the noise.
Based on my reading of PR 55608, this isn't really a regression, and it's definitely not a regression from 4.7 to 4.8. While the patch looks OK to me, the size increase in .debug_loc and the scope of the change suggest that this would be more appropriate for when Stage 1 reopens. -cary