From a0cac6f5708932e82aebe45bb0f8c737c65e0f43 Mon Sep 17 00:00:00 2001 From: kenner Date: Mon, 5 Jul 2004 15:16:10 +0000 Subject: [PATCH] * tree-pretty-print.c (dump_generic_node, case ARRAY_TYPE): Properly print bounds. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84118 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 3 +++ gcc/tree-pretty-print.c | 38 ++++++++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a8e9522..bcb3ca8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -5,6 +5,9 @@ 2004-07-05 Richard Kenner + * tree-pretty-print.c (dump_generic_node, case ARRAY_TYPE): Properly + print bounds. + * expr.c (expand_expr_real_1, case SWITCH_EXPR): Don't check against bounds if bounds aren't constant. diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c index a3649dd..48f8c13 100644 --- a/gcc/tree-pretty-print.c +++ b/gcc/tree-pretty-print.c @@ -378,27 +378,37 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags, { tree tmp; - /* Print the array type. */ - dump_generic_node (buffer, TREE_TYPE (node), spc, flags, false); + /* Print the innermost component type. */ + for (tmp = TREE_TYPE (node); TREE_CODE (tmp) == ARRAY_TYPE; + tmp = TREE_TYPE (tmp)) + ; + dump_generic_node (buffer, tmp, spc, flags, false); /* Print the dimensions. */ - tmp = node; - while (tmp && TREE_CODE (tmp) == ARRAY_TYPE) + for (tmp = node; TREE_CODE (tmp) == ARRAY_TYPE; + tmp = TREE_TYPE (tmp)) { + tree domain = TYPE_DOMAIN (tmp); + pp_character (buffer, '['); - if (TYPE_SIZE (tmp)) + if (domain) { - tree size = TYPE_SIZE (tmp); - if (TREE_CODE (size) == INTEGER_CST) - pp_wide_integer (buffer, - TREE_INT_CST_LOW (TYPE_SIZE (tmp)) / - TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (tmp)))); - else if (TREE_CODE (size) == MULT_EXPR) - dump_generic_node (buffer, TREE_OPERAND (size, 0), spc, flags, false); - /* else punt. */ + if (TYPE_MIN_VALUE (domain) + && !integer_zerop (TYPE_MIN_VALUE (domain))) + { + dump_generic_node (buffer, TYPE_MIN_VALUE (domain), + spc, flags, false); + pp_string (buffer, " .. "); + } + + if (TYPE_MAX_VALUE (domain)) + dump_generic_node (buffer, TYPE_MAX_VALUE (domain), + spc, flags, false); } + else + pp_string (buffer, ""); + pp_character (buffer, ']'); - tmp = TREE_TYPE (tmp); } break; } -- 2.7.4