c++: improve print_node of PTRMEM_CST

It's been inconvenient that pretty-printing of PTRMEM_CST didn't display
what member the constant refers to.

Adding that is complicated by the absence of a langhook for CONSTANT_CLASS_P
nodes; the simplest fix for that is to use the tcc_exceptional hook for
tcc_constant as well.

gcc/cp/ChangeLog:

	* ptree.c (cxx_print_xnode): Handle PTRMEM_CST.

gcc/ChangeLog:

	* langhooks.h (struct lang_hooks): Adjust comment.
	* print-tree.c (print_node): Also call print_xnode hook for
	tcc_constant class.
This commit is contained in:
Jason Merrill 2021-10-29 16:39:01 -04:00
parent 11c4a06a6c
commit 132f1c2777
3 changed files with 5 additions and 3 deletions

View File

@ -379,6 +379,9 @@ cxx_print_xnode (FILE *file, tree node, int indent)
if (tree message = STATIC_ASSERT_MESSAGE (node))
print_node (file, "message", message, indent+4);
break;
case PTRMEM_CST:
print_node (file, "member", PTRMEM_CST_MEMBER (node), indent+4);
break;
default:
break;
}

View File

@ -477,7 +477,7 @@ struct lang_hooks
void (*print_statistics) (void);
/* Called by print_tree when there is a tree of class tcc_exceptional
that it doesn't know how to display. */
or tcc_constant that it doesn't know how to display. */
lang_print_tree_hook print_xnode;
/* Called to print language-dependent parts of tcc_decl, tcc_type,

View File

@ -1004,8 +1004,7 @@ print_node (FILE *file, const char *prefix, tree node, int indent,
break;
default:
if (EXCEPTIONAL_CLASS_P (node))
lang_hooks.print_xnode (file, node, indent);
lang_hooks.print_xnode (file, node, indent);
break;
}