On Fri, Jun 22, 2012 at 2:35 AM, Jason Merrill <ja...@redhat.com> wrote:
> FAIL: g++.dg/debug/dwarf2/static-data-member2.C -std=gnu++98
> scan-assembler-not DW_TAG_enumerator
> FAIL: g++.dg/debug/dwarf2/static-data-member2.C -std=gnu++98
> scan-assembler-not DW_TAG_enumeration_type
> FAIL: g++.dg/debug/dwarf2/static-data-member2.C -std=gnu++11
> scan-assembler-not DW_TAG_enumerator
> FAIL: g++.dg/debug/dwarf2/static-data-member2.C -std=gnu++11
> scan-assembler-not DW_TAG_enumeration_type

This is a side effect of moving enumerators from pubnames to pubtypes
as requested in an earlier message in this thread. I should have
pushed back harder on this change.

prune_unused_types marks everything in the pubnames_table. If the
enumerators go in the pubname table (but the enum itself goes in the
pubtype table), then the unused enum becomes reachable from the
pubnames table.

The least complicated solution is to put them back in the
pubtypes_table. I could also defer adding them until after types are
pruned, I guess.

One somewhat unsatisfying way to rationalize it in my mind is to say
that as fields are to structs, so are enumerators to enums.

What do you think?

Sterling

gcc/ChangeLog
2012-06-22  Sterling Augustine  <sagust...@google.com>

        * dwarf2out.c (add_enumerator_pubname): Use pubtypes_table.

Reply via email to