Empty the base_types vector before (re)populating it
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 4 Feb 2022 11:07:46 +0000 (12:07 +0100)
committerEric Botcazou <ebotcazou@adacore.com>
Fri, 4 Feb 2022 11:10:05 +0000 (12:10 +0100)
Otherwise Bad Things happen when it is populated several times.

gcc/
PR debug/104366
* dwarf2out.cc (dwarf2out_finish): Empty base_types.
(dwarf2out_early_finish): Likewise.

gcc/dwarf2out.cc

index e60575b..d1e8654 100644 (file)
@@ -32155,6 +32155,7 @@ dwarf2out_finish (const char *filename)
     FOR_EACH_CHILD (die, c, gcc_assert (! c->die_mark));
   }
 #endif
+  base_types.truncate (0);
   for (ctnode = comdat_type_list; ctnode != NULL; ctnode = ctnode->next)
     resolve_addr (ctnode->root_die);
   resolve_addr (comp_unit_die ());
@@ -32999,6 +33000,7 @@ dwarf2out_early_finish (const char *filename)
      location related output removed and some LTO specific changes.
      Some refactoring might make both smaller and easier to match up.  */
 
+  base_types.truncate (0);
   for (ctnode = comdat_type_list; ctnode != NULL; ctnode = ctnode->next)
     mark_base_types (ctnode->root_die);
   mark_base_types (comp_unit_die ());