From: Eric Botcazou Date: Mon, 4 Jul 2022 10:16:38 +0000 (+0200) Subject: Fix crash on circular array types with -fdump switches X-Git-Tag: basepoints/gcc-14~5752 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=104b9875c7850c0587f1e96ee706da65ea1625be;p=thirdparty%2Fgcc.git 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. --- 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))