https://gcc.gnu.org/bugzilla/show_bug.cgi?id=16063

--- Comment #7 from Mark Wielaard <mark at gcc dot gnu.org> ---
Author: mark
Date: Wed May 21 15:44:59 2014
New Revision: 210717

URL: http://gcc.gnu.org/viewcvs?rev=210717&root=gcc&view=rev
Log:
PR debug/16063. Add DW_AT_type to DW_TAG_enumeration.

Add a new lang-hook that provides the underlying base type of an
ENUMERAL_TYPE. The default implementation will just use type_for_size.
The implementation for C++ will use the ENUM_UNDERLYING_TYPE if it exists.
Use this enum_underlying_base_type lang-hook in dwarf2out.c to add a
DW_AT_type base type reference to a DW_TAG_enumeration.

gcc/
    * dwarf2out.c (gen_enumeration_type_die): Add DW_AT_type if DWARF
    version >= 3 or not strict DWARF.
    * langhooks.h (struct lang_hooks_for_types): Add
    enum_underlying_base_type.
    * langhooks.c (lhd_enum_underlying_base_type): New function.
    * gcc/langhooks.h (struct lang_hooks_for_types): Add
    enum_underlying_base_type.
    * langhooks-def.h (lhd_enum_underlying_base_type): New declaration.
    (LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE): New define.
    (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add new lang hook.

gcc/cp/
    * cp-lang.c (cxx_enum_underlying_base_type): New function.
    (LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE): Define.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/cp-lang.c
    trunk/gcc/dwarf2out.c
    trunk/gcc/langhooks-def.h
    trunk/gcc/langhooks.c
    trunk/gcc/langhooks.h

Reply via email to