I was seeing crashes on localclass1.C for some testruns. The issue
turned out to be that we are doing better at pruning unnecessary debug
info, so we end up with 'B' on limbo_die_list and never referred to.
Let's deal with that situation.
Tested x86_64-pc-linux-gnu, applying to trunk.
commit 9bff8274719d394395941353e6d98694613b9643
Author: Jason Merrill <ja...@redhat.com>
Date: Thu Jun 11 13:09:13 2015 -0400
* dwarf2out.c (prune_unused_types): Handle unused top-level limbo
dies.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 8a36fe8..3a92b02 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -23789,8 +23789,17 @@ prune_unused_types (void)
if (skeleton_debug_str_hash)
skeleton_debug_str_hash->empty ();
prune_unused_types_prune (comp_unit_die ());
- for (node = limbo_die_list; node; node = node->next)
- prune_unused_types_prune (node->die);
+ for (limbo_die_node **pnode = &limbo_die_list; *pnode; )
+ {
+ node = *pnode;
+ if (!node->die->die_mark)
+ *pnode = node->next;
+ else
+ {
+ prune_unused_types_prune (node->die);
+ pnode = &node->next;
+ }
+ }
for (ctnode = comdat_type_list; ctnode; ctnode = ctnode->next)
prune_unused_types_prune (ctnode->root_die);