mirror of
https://gcc.gnu.org/git/gcc.git
synced 2025-01-07 19:43:43 +08:00
re PR debug/49090 (provide a way to recognize defaulted template parameters)
PR debug/49090 * dwarf2out.c (gen_generic_params_dies): Indicate default arguments with DW_AT_default_value. From-SVN: r196723
This commit is contained in:
parent
6721db5d15
commit
98e8112376
@ -1,3 +1,9 @@
|
|||||||
|
2013-03-16 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
|
PR debug/49090
|
||||||
|
* dwarf2out.c (gen_generic_params_dies): Indicate default arguments
|
||||||
|
with DW_AT_default_value.
|
||||||
|
|
||||||
2013-03-16 Jakub Jelinek <jakub@redhat.com>
|
2013-03-16 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* BASE-VER: Set to 4.9.0.
|
* BASE-VER: Set to 4.9.0.
|
||||||
|
@ -10238,6 +10238,7 @@ gen_generic_params_dies (tree t)
|
|||||||
tree parms, args;
|
tree parms, args;
|
||||||
int parms_num, i;
|
int parms_num, i;
|
||||||
dw_die_ref die = NULL;
|
dw_die_ref die = NULL;
|
||||||
|
int non_default;
|
||||||
|
|
||||||
if (!t || (TYPE_P (t) && !COMPLETE_TYPE_P (t)))
|
if (!t || (TYPE_P (t) && !COMPLETE_TYPE_P (t)))
|
||||||
return;
|
return;
|
||||||
@ -10257,9 +10258,14 @@ gen_generic_params_dies (tree t)
|
|||||||
|
|
||||||
parms_num = TREE_VEC_LENGTH (parms);
|
parms_num = TREE_VEC_LENGTH (parms);
|
||||||
args = lang_hooks.get_innermost_generic_args (t);
|
args = lang_hooks.get_innermost_generic_args (t);
|
||||||
|
if (TREE_CHAIN (args) && TREE_CODE (TREE_CHAIN (args)) == INTEGER_CST)
|
||||||
|
non_default = int_cst_value (TREE_CHAIN (args));
|
||||||
|
else
|
||||||
|
non_default = TREE_VEC_LENGTH (args);
|
||||||
for (i = 0; i < parms_num; i++)
|
for (i = 0; i < parms_num; i++)
|
||||||
{
|
{
|
||||||
tree parm, arg, arg_pack_elems;
|
tree parm, arg, arg_pack_elems;
|
||||||
|
dw_die_ref parm_die;
|
||||||
|
|
||||||
parm = TREE_VEC_ELT (parms, i);
|
parm = TREE_VEC_ELT (parms, i);
|
||||||
arg = TREE_VEC_ELT (args, i);
|
arg = TREE_VEC_ELT (args, i);
|
||||||
@ -10274,12 +10280,14 @@ gen_generic_params_dies (tree t)
|
|||||||
pack elements of ARG. Note that ARG would then be
|
pack elements of ARG. Note that ARG would then be
|
||||||
an argument pack. */
|
an argument pack. */
|
||||||
if (arg_pack_elems)
|
if (arg_pack_elems)
|
||||||
template_parameter_pack_die (TREE_VALUE (parm),
|
parm_die = template_parameter_pack_die (TREE_VALUE (parm),
|
||||||
arg_pack_elems,
|
arg_pack_elems,
|
||||||
die);
|
die);
|
||||||
else
|
else
|
||||||
generic_parameter_die (TREE_VALUE (parm), arg,
|
parm_die = generic_parameter_die (TREE_VALUE (parm), arg,
|
||||||
true /* Emit DW_AT_name */, die);
|
true /* emit name */, die);
|
||||||
|
if (i >= non_default)
|
||||||
|
add_AT_flag (parm_die, DW_AT_default_value, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -407,8 +407,10 @@ struct lang_hooks
|
|||||||
|
|
||||||
struct lang_hooks_for_lto lto;
|
struct lang_hooks_for_lto lto;
|
||||||
|
|
||||||
/* Returns the generic parameters of an instantiation of
|
/* Returns a TREE_VEC of the generic parameters of an instantiation of
|
||||||
a generic type or decl, e.g. C++ template instantiation. */
|
a generic type or decl, e.g. C++ template instantiation. If
|
||||||
|
TREE_CHAIN of the return value is set, it is an INTEGER_CST
|
||||||
|
indicating how many of the elements are non-default. */
|
||||||
tree (*get_innermost_generic_parms) (const_tree);
|
tree (*get_innermost_generic_parms) (const_tree);
|
||||||
|
|
||||||
/* Returns the TREE_VEC of arguments of an instantiation
|
/* Returns the TREE_VEC of arguments of an instantiation
|
||||||
|
Loading…
Reference in New Issue
Block a user