re PR debug/54410 (doubled DW_TAG_template_type_param)
PR c++/54410 * dwarf2out.c (gen_struct_or_union_type_die): Always schedule template parameters the first time. (gen_scheduled_generic_parms_dies): Check completeness here. From-SVN: r195613
This commit is contained in:
parent
6e61611091
commit
90b10decd8
3 changed files with 22 additions and 6 deletions
|
@ -1,3 +1,10 @@
|
|||
2013-01-31 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/54410
|
||||
* dwarf2out.c (gen_struct_or_union_type_die): Always schedule template
|
||||
parameters the first time.
|
||||
(gen_scheduled_generic_parms_dies): Check completeness here.
|
||||
|
||||
2013-01-31 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR middle-end/53073
|
||||
|
|
|
@ -19061,6 +19061,10 @@ gen_struct_or_union_type_die (tree type, dw_die_ref context_die,
|
|||
|
||||
scope_die = scope_die_for (type, context_die);
|
||||
|
||||
/* Generate child dies for template paramaters. */
|
||||
if (!type_die && debug_info_level > DINFO_LEVEL_TERSE)
|
||||
schedule_generic_params_dies_gen (type);
|
||||
|
||||
if (! type_die || (nested && is_cu_die (scope_die)))
|
||||
/* First occurrence of type or toplevel definition of nested class. */
|
||||
{
|
||||
|
@ -19078,11 +19082,6 @@ gen_struct_or_union_type_die (tree type, dw_die_ref context_die,
|
|||
else
|
||||
remove_AT (type_die, DW_AT_declaration);
|
||||
|
||||
/* Generate child dies for template paramaters. */
|
||||
if (debug_info_level > DINFO_LEVEL_TERSE
|
||||
&& COMPLETE_TYPE_P (type))
|
||||
schedule_generic_params_dies_gen (type);
|
||||
|
||||
/* If this type has been completed, then give it a byte_size attribute and
|
||||
then give a list of members. */
|
||||
if (complete && !ns_decl)
|
||||
|
@ -20592,7 +20591,8 @@ gen_scheduled_generic_parms_dies (void)
|
|||
return;
|
||||
|
||||
FOR_EACH_VEC_ELT (*generic_type_instances, i, t)
|
||||
gen_generic_params_dies (t);
|
||||
if (COMPLETE_TYPE_P (t))
|
||||
gen_generic_params_dies (t);
|
||||
}
|
||||
|
||||
|
||||
|
|
9
gcc/testsuite/g++.dg/debug/dwarf2/template-params-11.C
Normal file
9
gcc/testsuite/g++.dg/debug/dwarf2/template-params-11.C
Normal file
|
@ -0,0 +1,9 @@
|
|||
// PR c++/54410
|
||||
// { dg-options "-g -dA" }
|
||||
// { dg-final { scan-assembler-times "DIE \\(\[^\n\]*\\) DW_TAG_template_type_param" 1 } }
|
||||
|
||||
namespace N {
|
||||
template <class T> struct A { };
|
||||
}
|
||||
|
||||
N::A<int> a;
|
Loading…
Add table
Reference in a new issue