From 104b9875c7850c0587f1e96ee706da65ea1625be Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Mon, 4 Jul 2022 12:16:38 +0200 Subject: [PATCH] Fix crash on circular array types with -fdump switches Such questionable arrays types can occur in Ada. gcc/ * tree-pretty-print.cc (dump_generic_node) : Add guard for direct circularity. --- gcc/tree-pretty-print.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/tree-pretty-print.cc b/gcc/tree-pretty-print.cc index bfabe9e7627..47371d8bcbe 100644 --- a/gcc/tree-pretty-print.cc +++ b/gcc/tree-pretty-print.cc @@ -2077,7 +2077,11 @@ dump_generic_node (pretty_printer *pp, tree node, int spc, dump_flags_t flags, for (tmp = TREE_TYPE (node); TREE_CODE (tmp) == ARRAY_TYPE; tmp = TREE_TYPE (tmp)) ; - dump_generic_node (pp, tmp, spc, flags, false); + + /* Avoid to print recursively the array. */ + /* FIXME : Not implemented correctly, see print_struct_decl. */ + if (TREE_CODE (tmp) != POINTER_TYPE || TREE_TYPE (tmp) != node) + dump_generic_node (pp, tmp, spc, flags, false); /* Print the dimensions. */ for (tmp = node; TREE_CODE (tmp) == ARRAY_TYPE; tmp = TREE_TYPE (tmp)) -- 2.11.4.GIT