[Bug debug/56974] c++ ref qualifiers not represented in DWARF

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Nov 3 21:19:00 GMT 2016


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

--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Thu Nov  3 21:18:49 2016
New Revision: 241832

URL: https://gcc.gnu.org/viewcvs?rev=241832&root=gcc&view=rev
Log:
        PR debug/28767
        PR debug/56974
        * langhooks.h (struct lang_hooks_for_types): Add type_dwarf_attribute
        langhook.
        * langhooks.c (lhd_type_dwarf_attribute): New function.
        * langhooks-def.h (lhd_type_dwarf_attribute): Declare.
        (LANG_HOOKS_TYPE_DWARF_ATTRIBUTE): Define.
        (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add
        LANG_HOOKS_TYPE_DWARF_ATTRIBUTE.
        (check_qualified_type, check_aligned_type): Call it.
        * dwarf2out.c (modified_type_die): Don't use type_main_variant
        for FUNCTION_TYPE or METHOD_TYPE, instead walk over variants with
        check_base_type and check_lang_type.
        (gen_ptr_to_mbr_type_die): If lookup_type_die is already non-NULL,
        return early.  For pointer-to-data-member add DW_AT_use_location
        attribute.
        (gen_subroutine_type_die): Add DW_AT_{,rvalue_}reference attribute
        if needed.
        (gen_type_die_with_usage): Don't use type_main_variant
        for FUNCTION_TYPE or METHOD_TYPE, instead walk over variants with
        check_base_type and check_lang_type.  Formatting fixes. Call
        get_debug_type langhook.
cp/
        * tree.c (cp_check_qualified_type): Use check_base_type and
        TYPE_QUALS comparison instead of check_qualified_type.
        (cxx_type_hash_eq): Return false if type_memfn_rqual don't match.
        * cp-objcp-common.c (cp_get_debug_type): New function.
        (cp_decl_dwarf_attribute): Don't handle types here.
        (cp_type_dwarf_attribute): New function.
        * cp-objcp-common.h (cp_get_debug_type, cp_type_dwarf_attribute):
        Declare.
        (LANG_HOOKS_GET_DEBUG_TYPE, LANG_HOOKS_TYPE_DWARF_ATTRIBUTE):
        Define.
testsuite/
        * g++.dg/debug/dwarf2/ptrdmem-1.C: New test.
        * g++.dg/debug/dwarf2/ref-3.C: New test.
        * g++.dg/debug/dwarf2/ref-4.C: New test.
        * g++.dg/debug/dwarf2/refqual-1.C: New test.
        * g++.dg/debug/dwarf2/refqual-2.C: New test.

Added:
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/ptrdmem-1.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/ref-3.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/ref-4.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/refqual-1.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/refqual-2.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/cp-objcp-common.c
    trunk/gcc/cp/cp-objcp-common.h
    trunk/gcc/dwarf2out.c
    trunk/gcc/langhooks-def.h
    trunk/gcc/langhooks.c
    trunk/gcc/langhooks.h
    trunk/gcc/testsuite/ChangeLog


More information about the Gcc-bugs mailing list