OSDN Git Service

* config/mcore/mcore.h (PREDICATE_CODES): Add SYMBOL_REF and
[pf3gnuchains/gcc-fork.git] / gcc / tree-pretty-print.c
index 6d29773..743e159 100644 (file)
@@ -1,5 +1,5 @@
 /* Pretty formatting of GENERIC trees in C syntax.
-   Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    Adapted from c-pretty-print.c by Diego Novillo <dnovillo@redhat.com>
 
 This file is part of GCC.
@@ -72,7 +72,7 @@ do_niy (pretty_printer *buffer, tree node)
 
   if (EXPR_P (node))
     {
-      len = first_rtl_op (TREE_CODE (node));
+      len = TREE_CODE_LENGTH (TREE_CODE (node));
       for (i = 0; i < len; ++i)
        {
          newline_and_indent (buffer, 2);
@@ -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
@@ -397,6 +426,9 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
            pp_string (buffer,  "volatile");
          else if (quals & TYPE_QUAL_RESTRICT)
            pp_string (buffer, " restrict");
+
+         if (TYPE_REF_CAN_ALIAS_ALL (node))
+           pp_string (buffer, " {ref-all}");
        }
       break;
 
@@ -409,10 +441,6 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
       pp_string (buffer, "::");
       break;
 
-    case FILE_TYPE:
-      NIY;
-      break;
-
     case ARRAY_TYPE:
       {
        tree tmp;
@@ -424,38 +452,11 @@ 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;
       }
 
-    case SET_TYPE:
-      NIY;
-      break;
-
     case RECORD_TYPE:
     case UNION_TYPE:
     case QUAL_UNION_TYPE:
@@ -1512,18 +1513,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 (TREE_CODE (TYPE_SIZE (tmp)) == INTEGER_CST)
-               pp_wide_integer (buffer,
-                               TREE_INT_CST_LOW (TYPE_SIZE (tmp)) /
-                               TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (tmp))));
-             else
-               dump_generic_node (buffer, TYPE_SIZE_UNIT (tmp), spc, flags,
-                                  false);
-           }
-         pp_character (buffer, ']');
+         dump_array_domain (buffer, TYPE_DOMAIN (tmp), spc, flags);
          tmp = TREE_TYPE (tmp);
        }
     }