Commit 90b10dec by Jason Merrill Committed by Jason Merrill

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
parent 6e616110
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);
}
......
// 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;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment