OSDN Git Service

* tree-phinode.c (resize_phi_node): Abort when LEN is strictly
[pf3gnuchains/gcc-fork.git] / gcc / print-rtl.c
index a90a2c3..32ef01c 100644 (file)
@@ -67,6 +67,23 @@ int flag_simple = 0;
 int dump_for_graph;
 
 #ifndef GENERATOR_FILE
+static void
+print_decl_name (FILE *outfile, tree node)
+{
+  if (DECL_NAME (node))
+    fputs (IDENTIFIER_POINTER (DECL_NAME (node)), outfile);
+  else
+    {
+      if (TREE_CODE (node) == LABEL_DECL && LABEL_DECL_UID (node) != -1)
+       fprintf (outfile, "L." HOST_WIDE_INT_PRINT_DEC, LABEL_DECL_UID (node));
+      else
+        {
+          char c = TREE_CODE (node) == CONST_DECL ? 'C' : 'D';
+         fprintf (outfile, "%c.%u", c, DECL_UID (node));
+        }
+    }
+}
+
 void
 print_mem_expr (FILE *outfile, tree expr)
 {
@@ -76,9 +93,8 @@ print_mem_expr (FILE *outfile, tree expr)
        print_mem_expr (outfile, TREE_OPERAND (expr, 0));
       else
        fputs (" <variable>", outfile);
-      if (DECL_NAME (TREE_OPERAND (expr, 1)))
-       fprintf (outfile, ".%s",
-                IDENTIFIER_POINTER (DECL_NAME (TREE_OPERAND (expr, 1))));
+      fputc ('.', outfile);
+      print_decl_name (outfile, TREE_OPERAND (expr, 1));
     }
   else if (TREE_CODE (expr) == INDIRECT_REF)
     {
@@ -86,12 +102,25 @@ print_mem_expr (FILE *outfile, tree expr)
       print_mem_expr (outfile, TREE_OPERAND (expr, 0));
       fputs (")", outfile);
     }
-  else if (DECL_NAME (expr))
-    fprintf (outfile, " %s", IDENTIFIER_POINTER (DECL_NAME (expr)));
+  else if (TREE_CODE (expr) == ALIGN_INDIRECT_REF)
+    {
+      fputs (" (A*", outfile);
+      print_mem_expr (outfile, TREE_OPERAND (expr, 0));
+      fputs (")", outfile);
+    }
+  else if (TREE_CODE (expr) == MISALIGNED_INDIRECT_REF)
+    {
+      fputs (" (M*", outfile);
+      print_mem_expr (outfile, TREE_OPERAND (expr, 0));
+      fputs (")", outfile);
+    }
   else if (TREE_CODE (expr) == RESULT_DECL)
     fputs (" <result>", outfile);
   else
-    fputs (" <anonymous>", outfile);
+    {
+      fputc (' ', outfile);
+      print_decl_name (outfile, expr);
+    }
 }
 #endif
 
@@ -169,16 +198,15 @@ print_rtx (rtx in_rtx)
          if (RTX_FLAG (in_rtx, return_val))
            fputs ("/i", outfile);
 
-         if (GET_MODE (in_rtx) != VOIDmode)
-           {
-             /* Print REG_NOTE names for EXPR_LIST and INSN_LIST.  */
-             if (GET_CODE (in_rtx) == EXPR_LIST
-                 || GET_CODE (in_rtx) == INSN_LIST)
-               fprintf (outfile, ":%s",
-                        GET_REG_NOTE_NAME (GET_MODE (in_rtx)));
-             else
-               fprintf (outfile, ":%s", GET_MODE_NAME (GET_MODE (in_rtx)));
-           }
+         /* Print REG_NOTE names for EXPR_LIST and INSN_LIST.  */
+         if (GET_CODE (in_rtx) == EXPR_LIST
+             || GET_CODE (in_rtx) == INSN_LIST)
+           fprintf (outfile, ":%s",
+                    GET_REG_NOTE_NAME (GET_MODE (in_rtx)));
+
+         /* For other rtl, print the mode if it's not VOID.  */
+         else if (GET_MODE (in_rtx) != VOIDmode)
+           fprintf (outfile, ":%s", GET_MODE_NAME (GET_MODE (in_rtx)));
        }
     }