[Bug debug/30161] GCC should generate dwarf info about template parameters

dodji at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Mon Aug 31 21:48:00 GMT 2009



------- Comment #8 from dodji at gcc dot gnu dot org  2009-08-31 21:48 -------
Subject: Bug 30161

Author: dodji
Date: Mon Aug 31 21:48:04 2009
New Revision: 151249

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=151249
Log:
Emit DWARF for template parameters (PR debug/30161)

ChangeLog:
        PR debug/30161
        * include/dwarf2.h (enum dwarf_tag): Added
        DW_TAG_GNU_template_template_param
        (enum dwarf_attribute): Added DW_AT_GNU_template_name.

gcc/ChangeLog:
        PR debug/30161
        * cgraph.h (cgraph_get_node): Declare ...
        * cgraph.c (cgraph_get_node): ... new function.
        * dwarf2out.c (gen_generic_params_dies,
        generic_parameter_die, tree_add_const_value_attribute_for_decl,
        make_ith_pack_parameter_name,
        append_entry_to_tmpl_value_parm_die_table,
        gen_remaining_tmpl_value_param_die_attribute): New functions.
        (gen_subprogram_die): Generate debug info for template parameters
        if debug info level is higher than DINFO_LEVEL_TERSE.
        Use tree_add_const_value_attribute_for_decl instead of
        tree_add_const_value_attribute.
        (gen_const_die): Use tree_add_const_value_attribute_for_decl
        instead of tree_add_const_value_attribute.
        (gen_struct_or_union_type_die): Generate debug
        info for template parameters if debug info level is higher than
        DINFO_LEVEL_TERSE.
        (tree_add_const_value_attribute): Handle integral and pointer
        constants. Update comment.
        (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
        (dwarf_attr_name): Support DW_AT_GNU_template_name.
        (reference_to_unused): Fix thinko. Remove redundant predicates from
        tests.
        (tree_add_const_value_attribute): Make this work for constant
        expressions only.
        tree_add_const_value_attribute_for_decl is to be used for variable
        DECLs now.
        (add_location_or_const_value_attribute): Use
        tree_add_const_value_attribute_for_decl now.
        (dwarf2out_finish): Emit the DW_AT_const_value attribute of
        DW_TAG_template_value_param DIEs after function DIEs have been
        emitted.
        * langhooks.h (lang_hooks_for_types): Add
        get_argument_pack_elems.
        (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
        (lang_hooks): Added get_innermost_generic_parms,
        get_innermost_generic_args.
        * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
        LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
        LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
        LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.

gcc/cp/ChangeLog:
        PR debug/30161
        * cp-tree.h (get_template_info): Parameter should be const.
        (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): Fix typo.
        (get_template_argument_pack_elems,
        get_primary_template_innermost_parameters,
        get_template_innermost_arguments, template_template_parameter_p):
        Declare ...
        * pt.c (get_template_argument_pack_elems,
        get_template_innermost_parameters, get_template_innermost_arguments,
        template_template_parameter_p):
        ... New C++ front end implementation of new language hooks.
        (primary_template_instantiation_p): New private helper.
        (make_ith_pack_parameter_name): Use snprintf and strnlen instead of
        printf and strlen.
        (get_template_info): Const-ify parameter.
        * cp-lang.c (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
        LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
        LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
        LANG_HOOKS_GENERIC_TYPE_PARAMETER_DECL_P): Initialize these
        interfaces for the C++ front-end.

gcc/testsuite/ChangeLog:
        PR debug/30161
        * g++.dg/debug/dwarf2/template-params-1.C: New test.
        * g++.dg/debug/dwarf2/template-params-2.C: Likewise.
        * g++.dg/debug/dwarf2/template-params-3.C: Likewise.
        * g++.dg/debug/dwarf2/template-params-4.C: Likewise.
        * g++.dg/debug/dwarf2/template-params-5.C: Likewise.
        * g++.dg/debug/dwarf2/template-params-6.C: Likewise.
        * g++.dg/debug/dwarf2/template-func-params-1.C: Likewise.
        * g++.dg/debug/dwarf2/template-func-params-2.C: Likewise.
        * g++.dg/debug/dwarf2/template-func-params-3.C: Likewise.
        * g++.dg/debug/dwarf2/template-func-params-4.C: Likewise.
        * g++.dg/debug/dwarf2/template-func-params-5.C: Likewise.
        * g++.dg/debug/dwarf2/template-func-params-6.C: Likewise.
        * g++.dg/debug/dwarf2/template-func-params-7.C: Likewise.

Added:
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-1.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-2.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-3.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-4.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-5.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-6.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-7.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/template-params-1.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/template-params-2.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/template-params-3.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/template-params-4.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/template-params-5.C
    trunk/gcc/testsuite/g++.dg/debug/dwarf2/template-params-6.C
Modified:
    trunk/ChangeLog
    trunk/gcc/ChangeLog
    trunk/gcc/cgraph.c
    trunk/gcc/cgraph.h
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/cp-lang.c
    trunk/gcc/cp/cp-tree.h
    trunk/gcc/cp/pt.c
    trunk/gcc/dwarf2out.c
    trunk/gcc/langhooks-def.h
    trunk/gcc/langhooks.h
    trunk/gcc/testsuite/ChangeLog
    trunk/include/dwarf2.h


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30161



More information about the Gcc-bugs mailing list