Per https://wiki.dwarfstd.org/C++0x_Variadic_templates.md
DW_TAG_GNU_formal_parameter_pack should have a DW_AT_name:
17$: DW_TAG_formal_parameter_pack
DW_AT_name("args")
18$: DW_TAG_formal_parameter
! no DW_AT_name attribute
DW_AT_type(reference to 13$)
(...)
PR c++/70536
gcc/ChangeLog:
* dwarf2out.cc (gen_formal_parameter_pack_die): Add name attr.
gcc/testsuite/ChangeLog:
* g++.dg/debug/dwarf2/template-func-params-7.C: Check for pack names.
Co-authored-by: Jason Merrill <jason@redhat.com>
&& subr_die);
parm_pack_die = new_die (DW_TAG_GNU_formal_parameter_pack, subr_die, parm_pack);
- add_src_coords_attributes (parm_pack_die, parm_pack);
+ add_name_and_src_coords_attributes (parm_pack_die, parm_pack);
for (arg = pack_arg; arg; arg = DECL_CHAIN (arg))
{
// These 3 function template instantiations has a total of 3 template
// parameters named T.
// { dg-final { scan-assembler-times "\.ascii \"T.0\"\[\t \]+\[^\n\]*DW_AT_name" 3 } }
+// And the packs also have names.
+// { dg-final { scan-assembler-times "\.ascii \"PTs.0\"\[\t \]+\[^\n\]*DW_AT_name" 3 } }
+// { dg-final { scan-assembler-times "\.ascii \"args.0\"\[\t \]+\[^\n\]*DW_AT_name" 3 } }
void
*/
}
-template<typename T, typename... PackTypes>
+template<typename T, typename... PTs>
void
printf(const char* s,
T value,
- PackTypes... args)
+ PTs... args)
{
while (*s)
{