]> gcc.gnu.org Git - gcc.git/commitdiff
tree-pretty-print.c (dump_array_domain): Split out from dump_generic_node; fix off...
authorRichard Henderson <rth@redhat.com>
Wed, 8 Dec 2004 02:04:57 +0000 (18:04 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 8 Dec 2004 02:04:57 +0000 (18:04 -0800)
        * tree-pretty-print.c (dump_array_domain): Split out from
        dump_generic_node; fix off-by-one error on zero-based array bounds.
        (dump_generic_node): Use it.
        (print_declaration): Likewise.

From-SVN: r91850

gcc/ChangeLog
gcc/tree-pretty-print.c

index 10d9507fbbc4626b3866cba1417e225ad7f8e0e0..b74fcd8e5163ab90f6e4b724ea8fe5530d0b4393 100644 (file)
@@ -1,3 +1,10 @@
+2004-12-07  Richard Henderson  <rth@redhat.com>
+
+       * tree-pretty-print.c (dump_array_domain): Split out from
+       dump_generic_node; fix off-by-one error on zero-based array bounds.
+       (dump_generic_node): Use it.
+       (print_declaration): Likewise.
+
 2004-12-08  Richard Guenther <richard.guenther@uni-tuebingen.de>
 
        * doc/invoke.texi: Adjust default values for
index ce19f5fcf8930c733733ade4e826f0dc60cdb33f..8f36235eb43d65da64e5f848c62eb986802498e0 100644 (file)
@@ -217,6 +217,35 @@ dump_function_declaration (pretty_printer *buffer, tree node,
   pp_character (buffer, ')');
 }
 
+/* Dump the domain associated with an array.  */
+
+static void
+dump_array_domain (pretty_printer *buffer, tree domain, int spc, int flags)
+{
+  pp_character (buffer, '[');
+  if (domain)
+    {
+      tree min = TYPE_MIN_VALUE (domain);
+      tree max = TYPE_MAX_VALUE (domain);
+
+      if (min && max
+         && integer_zerop (min)
+         && host_integerp (max, 0))
+       pp_wide_integer (buffer, TREE_INT_CST_LOW (max) + 1);
+      else
+       {
+         if (min)
+           dump_generic_node (buffer, min, spc, flags, false);
+         pp_character (buffer, ':');
+         if (max)
+           dump_generic_node (buffer, max, spc, flags, false);
+       }
+    }
+  else
+    pp_string (buffer, "<unknown>");
+  pp_character (buffer, ']');
+}
+
 /* Dump the node NODE on the pretty_printer BUFFER, SPC spaces of indent.
    FLAGS specifies details to show in the dump (see TDF_* in tree.h).  If
    IS_STMT is true, the object printed is considered to be a statement
@@ -427,31 +456,8 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
        dump_generic_node (buffer, tmp, spc, flags, false);
 
        /* Print the dimensions.  */
-       for (tmp = node; TREE_CODE (tmp) == ARRAY_TYPE;
-            tmp = TREE_TYPE (tmp))
-         {
-           tree domain = TYPE_DOMAIN (tmp);
-
-           pp_character (buffer, '[');
-           if (domain)
-             {
-               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, "<unknown>");
-
-           pp_character (buffer, ']');
-         }
+       for (tmp = node; TREE_CODE (tmp) == ARRAY_TYPE; tmp = TREE_TYPE (tmp))
+         dump_array_domain (buffer, TYPE_DOMAIN (tmp), spc, flags);
        break;
       }
 
@@ -1515,23 +1521,7 @@ print_declaration (pretty_printer *buffer, tree t, int spc, int flags)
       tmp = TREE_TYPE (t);
       while (TREE_CODE (tmp) == ARRAY_TYPE)
        {
-         pp_character (buffer, '[');
-         if (TYPE_DOMAIN (tmp))
-           {
-             if (TYPE_MIN_VALUE (TYPE_DOMAIN (tmp))
-                 && !integer_zerop (TYPE_MIN_VALUE (TYPE_DOMAIN (tmp))))
-               {
-                 dump_generic_node (buffer,
-                                    TYPE_MIN_VALUE (TYPE_DOMAIN (tmp)),
-                                    spc, flags, false);
-                 pp_string (buffer, " .. ");
-               }
-
-             if (TYPE_MAX_VALUE (TYPE_DOMAIN (tmp)))
-               dump_generic_node (buffer, TYPE_MAX_VALUE (TYPE_DOMAIN (tmp)),
-                                  spc, flags, false);
-           }
-         pp_character (buffer, ']');
+         dump_array_domain (buffer, TYPE_DOMAIN (tmp), spc, flags);
          tmp = TREE_TYPE (tmp);
        }
     }
This page took 0.077434 seconds and 5 git commands to generate.