https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83941
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2018-01-19
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot
gnu.org
Ever confirmed|0 |1
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Created attachment 43186
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43186&action=edit
broken patch
This is an attempt at solving this by pruning those DIEs that didn't receive
any further annotation. The issue with this is that for example
gcc.dg/torture/pr67253.c still ICEs with this because location lists might
refer to the
pruned dies - in this particular case via DW_OP_GNU_parameter_ref.
I'm unsure if all such references can be adjusted to refer to the original
debug - at least code that uses get_ref_die_offset would need to be
replaced with get_ref_die_offset_label as is used elsewhere to allow
references to $early-debug-symbol + offset. This replacement might also
come with a larger cost than simply keeping the forwarder.
So a better approach would compute whether the forwarder is used and only
then prune it.