------- 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