From: Richard Kenner Date: Mon, 5 Jul 2004 15:16:10 +0000 (+0000) Subject: tree-pretty-print.c (dump_generic_node, [...]): Properly print bounds. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2709efd88c169398f2d23305813f6c7f3c3b18f0;p=gcc.git tree-pretty-print.c (dump_generic_node, [...]): Properly print bounds. * tree-pretty-print.c (dump_generic_node, case ARRAY_TYPE): Properly print bounds. From-SVN: r84118 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a8e9522dbf8..bcb3ca89efd 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 a3649ddd2a0..48f8c13611e 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; }