From 73861a4142c04fdeb77b72f8c534e2e967a69bae Mon Sep 17 00:00:00 2001 From: Paul Koning Date: Thu, 31 Jan 2013 13:29:15 -0500 Subject: re PR debug/55059 (DWARF missing concrete class definition) PR debug/55059 PR debug/54508 * dwarf2out.c (prune_unused_types_mark): Mark all of parent's children if parent is a class. (prune_unused_types_prune): Don't add DW_AT_declaration. From-SVN: r195622 --- gcc/dwarf2out.c | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) (limited to 'gcc/dwarf2out.c') diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 3106dd9..75fea20 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -21905,9 +21905,11 @@ prune_unused_types_mark (dw_die_ref die, int dokids) prune_unused_types_mark_generic_parms_dies (die); /* We also have to mark its parents as used. - (But we don't want to mark our parents' kids due to this.) */ + (But we don't want to mark our parent's kids due to this, + unless it is a class.) */ if (die->die_parent) - prune_unused_types_mark (die->die_parent, 0); + prune_unused_types_mark (die->die_parent, + class_scope_p (die->die_parent)); /* Mark any referenced nodes. */ prune_unused_types_walk_attribs (die); @@ -22082,7 +22084,6 @@ static void prune_unused_types_prune (dw_die_ref die) { dw_die_ref c; - int pruned = 0; gcc_assert (die->die_mark); prune_unused_types_update_strings (die); @@ -22105,25 +22106,13 @@ prune_unused_types_prune (dw_die_ref die) prev->die_sib = c->die_sib; die->die_child = prev; } - pruned = 1; - goto finished; + return; } if (c != prev->die_sib) - { - prev->die_sib = c; - pruned = 1; - } + prev->die_sib = c; prune_unused_types_prune (c); } while (c != die->die_child); - - finished: - /* If we pruned children, and this is a class, mark it as a - declaration to inform debuggers that this is not a complete - class definition. */ - if (pruned && die->die_mark == 1 && class_scope_p (die) - && ! is_declaration_die (die)) - add_AT_flag (die, DW_AT_declaration, 1); } /* Remove dies representing declarations that we never use. */ -- cgit v1.1