c++: improve dumping of templated decls
Commit Message
This makes the dumping routines output more information for templated
decls, to help streamline debugging.
Tested on x86_64-pc-linux-gnu, does this look OK for trunk?
gcc/cp/ChangeLog:
* ptree.c (cxx_print_decl): Dump the DECL_TEMPLATE_RESULT of
a TEMPLATE_DECL. Dump the DECL_TEMPLATE_INFO rather than just
printing its pointer.
---
gcc/cp/ptree.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
Comments
On 9/22/21 11:56, Patrick Palka wrote:
> This makes the dumping routines output more information for templated
> decls, to help streamline debugging.
>
> Tested on x86_64-pc-linux-gnu, does this look OK for trunk?
OK.
> gcc/cp/ChangeLog:
>
> * ptree.c (cxx_print_decl): Dump the DECL_TEMPLATE_RESULT of
> a TEMPLATE_DECL. Dump the DECL_TEMPLATE_INFO rather than just
> printing its pointer.
> ---
> gcc/cp/ptree.c | 10 +++-------
> 1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/gcc/cp/ptree.c b/gcc/cp/ptree.c
> index 7f140f5f06b..1dcd764af01 100644
> --- a/gcc/cp/ptree.c
> +++ b/gcc/cp/ptree.c
> @@ -51,6 +51,7 @@ cxx_print_decl (FILE *file, tree node, int indent)
> }
> else if (TREE_CODE (node) == TEMPLATE_DECL)
> {
> + print_node (file, "result", DECL_TEMPLATE_RESULT (node), indent + 4);
> print_node (file, "parms", DECL_TEMPLATE_PARMS (node), indent + 4);
> indent_to (file, indent + 3);
> fprintf (file, " full-name \"%s\"",
> @@ -115,13 +116,8 @@ cxx_print_decl (FILE *file, tree node, int indent)
>
> if (VAR_OR_FUNCTION_DECL_P (node)
> && DECL_TEMPLATE_INFO (node))
> - {
> - if (need_indent)
> - indent_to (file, indent + 3);
> - fprintf (file, " template-info %p",
> - (void *) DECL_TEMPLATE_INFO (node));
> - need_indent = false;
> - }
> + print_node (file, "template-info", DECL_TEMPLATE_INFO (node),
> + indent + 4);
> }
>
> void
>
@@ -51,6 +51,7 @@ cxx_print_decl (FILE *file, tree node, int indent)
}
else if (TREE_CODE (node) == TEMPLATE_DECL)
{
+ print_node (file, "result", DECL_TEMPLATE_RESULT (node), indent + 4);
print_node (file, "parms", DECL_TEMPLATE_PARMS (node), indent + 4);
indent_to (file, indent + 3);
fprintf (file, " full-name \"%s\"",
@@ -115,13 +116,8 @@ cxx_print_decl (FILE *file, tree node, int indent)
if (VAR_OR_FUNCTION_DECL_P (node)
&& DECL_TEMPLATE_INFO (node))
- {
- if (need_indent)
- indent_to (file, indent + 3);
- fprintf (file, " template-info %p",
- (void *) DECL_TEMPLATE_INFO (node));
- need_indent = false;
- }
+ print_node (file, "template-info", DECL_TEMPLATE_INFO (node),
+ indent + 4);
}
void