aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c23
1 files changed, 6 insertions, 17 deletions
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. */