summaryrefslogtreecommitdiff
path: root/gcc/tree-pretty-print.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-03-07 10:19:36 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-03-07 10:19:36 +0100
commitb6f03d13126216b986b651a39bfc968267d56e3a (patch)
tree159b61aad84c157344321082d5e6b220b05b8130 /gcc/tree-pretty-print.c
parent0f1de8d013d92e2996f6936ecb25b2561e48ca56 (diff)
re PR c++/84704 (internal compiler error: gimplification failed)
PR c++/84704 * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag on tmp_var. * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG, don't print names of DECL_NAMELESS DECL_IGNORED_P decls. From-SVN: r258317
Diffstat (limited to 'gcc/tree-pretty-print.c')
-rw-r--r--gcc/tree-pretty-print.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index 73eb27c8e8f..276ad00a7b2 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -247,21 +247,32 @@ dump_fancy_name (pretty_printer *pp, tree name)
static void
dump_decl_name (pretty_printer *pp, tree node, dump_flags_t flags)
{
- if (DECL_NAME (node))
+ tree name = DECL_NAME (node);
+ if (name)
{
if ((flags & TDF_ASMNAME)
&& HAS_DECL_ASSEMBLER_NAME_P (node)
&& DECL_ASSEMBLER_NAME_SET_P (node))
pp_tree_identifier (pp, DECL_ASSEMBLER_NAME_RAW (node));
+ /* For -fcompare-debug don't dump DECL_NAMELESS names at all,
+ -g might have created more fancy names and their indexes
+ could get out of sync. Usually those should be DECL_IGNORED_P
+ too, SRA can create even non-DECL_IGNORED_P DECL_NAMELESS fancy
+ names, let's hope those never get out of sync after doing the
+ dump_fancy_name sanitization. */
+ else if ((flags & TDF_COMPARE_DEBUG)
+ && DECL_NAMELESS (node)
+ && DECL_IGNORED_P (node))
+ name = NULL_TREE;
/* For DECL_NAMELESS names look for embedded uids in the
names and sanitize them for TDF_NOUID. */
else if ((flags & TDF_NOUID) && DECL_NAMELESS (node))
- dump_fancy_name (pp, DECL_NAME (node));
+ dump_fancy_name (pp, name);
else
- pp_tree_identifier (pp, DECL_NAME (node));
+ pp_tree_identifier (pp, name);
}
char uid_sep = (flags & TDF_GIMPLE) ? '_' : '.';
- if ((flags & TDF_UID) || DECL_NAME (node) == NULL_TREE)
+ if ((flags & TDF_UID) || name == NULL_TREE)
{
if (TREE_CODE (node) == LABEL_DECL && LABEL_DECL_UID (node) != -1)
pp_printf (pp, "L%c%d", uid_sep, (int) LABEL_DECL_UID (node));