OSDN Git Service

2012-01-27 Tobias Burnus <burnus@net-b.de>
[pf3gnuchains/gcc-fork.git] / gcc / print-rtl.c
index a0f9dfb..9bd8621 100644 (file)
@@ -43,6 +43,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-pretty-print.h"
 #include "cselib.h"
 #include "tree-pass.h"
+#include "dwarf2out.h"
 #endif
 
 static FILE *outfile;
@@ -282,6 +283,7 @@ print_rtx (const_rtx in_rtx)
                }
 
              case NOTE_INSN_DELETED_LABEL:
+             case NOTE_INSN_DELETED_DEBUG_LABEL:
                {
                  const char *label = NOTE_DELETED_LABEL_NAME (in_rtx);
                  if (label)
@@ -309,14 +311,29 @@ print_rtx (const_rtx in_rtx)
 #endif
                break;
 
+             case NOTE_INSN_CFI:
+#ifndef GENERATOR_FILE
+               fputc ('\n', outfile);
+               output_cfi_directive (outfile, NOTE_CFI (in_rtx));
+               fputc ('\t', outfile);
+#endif
+               break;
+
              default:
                break;
              }
          }
        else if (i == 8 && JUMP_P (in_rtx) && JUMP_LABEL (in_rtx) != NULL)
-         /* Output the JUMP_LABEL reference.  */
-         fprintf (outfile, "\n%s%*s -> %d", print_rtx_head, indent * 2, "",
-                  INSN_UID (JUMP_LABEL (in_rtx)));
+         {
+           /* Output the JUMP_LABEL reference.  */
+           fprintf (outfile, "\n%s%*s -> ", print_rtx_head, indent * 2, "");
+           if (GET_CODE (JUMP_LABEL (in_rtx)) == RETURN)
+             fprintf (outfile, "return");
+           else if (GET_CODE (JUMP_LABEL (in_rtx)) == SIMPLE_RETURN)
+             fprintf (outfile, "simple_return");
+           else
+             fprintf (outfile, "%d", INSN_UID (JUMP_LABEL (in_rtx)));
+         }
        else if (i == 0 && GET_CODE (in_rtx) == VALUE)
          {
 #ifndef GENERATOR_FILE
@@ -426,7 +443,8 @@ print_rtx (const_rtx in_rtx)
          {
            /* This field is only used for NOTE_INSN_DELETED_LABEL, and
               other times often contains garbage from INSN->NOTE death.  */
-           if (NOTE_KIND (in_rtx) == NOTE_INSN_DELETED_LABEL)
+           if (NOTE_KIND (in_rtx) == NOTE_INSN_DELETED_LABEL
+               || NOTE_KIND (in_rtx) == NOTE_INSN_DELETED_DEBUG_LABEL)
              fprintf (outfile, " %d",  XINT (in_rtx, i));
          }
 #if !defined(GENERATOR_FILE) && NUM_UNSPECV_VALUES > 0
@@ -450,11 +468,10 @@ print_rtx (const_rtx in_rtx)
            const char *name;
 
 #ifndef GENERATOR_FILE
-           if (REG_P (in_rtx) && value < FIRST_PSEUDO_REGISTER)
-             fprintf (outfile, " %d %s", REGNO (in_rtx),
-                      reg_names[REGNO (in_rtx)]);
+           if (REG_P (in_rtx) && (unsigned) value < FIRST_PSEUDO_REGISTER)
+             fprintf (outfile, " %d %s", value, reg_names[value]);
            else if (REG_P (in_rtx)
-                    && value <= LAST_VIRTUAL_REGISTER)
+                    && (unsigned) value <= LAST_VIRTUAL_REGISTER)
              {
                if (value == VIRTUAL_INCOMING_ARGS_REGNUM)
                  fprintf (outfile, " %d virtual-incoming-args", value);
@@ -552,6 +569,8 @@ print_rtx (const_rtx in_rtx)
 #ifndef GENERATOR_FILE
        if (i == 0 && GET_CODE (in_rtx) == DEBUG_IMPLICIT_PTR)
          print_mem_expr (outfile, DEBUG_IMPLICIT_PTR_DECL (in_rtx));
+       else if (i == 0 && GET_CODE (in_rtx) == DEBUG_PARAMETER_REF)
+         print_mem_expr (outfile, DEBUG_PARAMETER_REF_DECL (in_rtx));
        else
          dump_addr (outfile, " ", XTREE (in_rtx, i));
 #endif
@@ -586,13 +605,11 @@ print_rtx (const_rtx in_rtx)
       if (MEM_EXPR (in_rtx))
        print_mem_expr (outfile, MEM_EXPR (in_rtx));
 
-      if (MEM_OFFSET (in_rtx))
-       fprintf (outfile, "+" HOST_WIDE_INT_PRINT_DEC,
-                INTVAL (MEM_OFFSET (in_rtx)));
+      if (MEM_OFFSET_KNOWN_P (in_rtx))
+       fprintf (outfile, "+" HOST_WIDE_INT_PRINT_DEC, MEM_OFFSET (in_rtx));
 
-      if (MEM_SIZE (in_rtx))
-       fprintf (outfile, " S" HOST_WIDE_INT_PRINT_DEC,
-                INTVAL (MEM_SIZE (in_rtx)));
+      if (MEM_SIZE_KNOWN_P (in_rtx))
+       fprintf (outfile, " S" HOST_WIDE_INT_PRINT_DEC, MEM_SIZE (in_rtx));
 
       if (MEM_ALIGN (in_rtx) != 1)
        fprintf (outfile, " A%u", MEM_ALIGN (in_rtx));