Tweaks to print_rtx_function
authorDavid Malcolm <dmalcolm@redhat.com>
Fri, 14 Oct 2016 20:22:23 +0000 (20:22 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Fri, 14 Oct 2016 20:22:23 +0000 (20:22 +0000)
gcc/ChangeLog:
* print-rtl-function.c (print_edge): Omit "(flags)" when none are
set.
(print_rtx_function): Update example in comment for...
* print-rtl.c (print_rtx_operand_code_r): In compact mode, print
non-virtual pseudos with a '%' sigil followed by the regno, offset
by (LAST_VIRTUAL_REGISTER + 1), so that the first non-virtual
pseudo is dumped as "%0".

From-SVN: r241185

gcc/ChangeLog
gcc/print-rtl-function.c
gcc/print-rtl.c

index 732ccb28f0e3155ce06ca2d240d20f6c6d9281b6..2cf3f940d8824e761f88c0169b36105971aaf871 100644 (file)
@@ -1,3 +1,13 @@
+2016-10-14  David Malcolm  <dmalcolm@redhat.com>
+
+       * print-rtl-function.c (print_edge): Omit "(flags)" when none are
+       set.
+       (print_rtx_function): Update example in comment for...
+       * print-rtl.c (print_rtx_operand_code_r): In compact mode, print
+       non-virtual pseudos with a '%' sigil followed by the regno, offset
+       by (LAST_VIRTUAL_REGISTER + 1), so that the first non-virtual
+       pseudo is dumped as "%0".
+
 2016-10-14  Jakub Jelinek  <jakub@redhat.com>
 
        PR middle-end/77959
index 2abae849ab9c3525747004fa508b6e6894ed22e8..f46304bf944ad07982c3651e54f643f6c28b6db4 100644 (file)
@@ -60,9 +60,11 @@ print_edge (FILE *outfile, edge e, bool from)
 
   /* Express edge flags as a string with " | " separator.
      e.g. (flags "FALLTHRU | DFS_BACK").  */
-  fprintf (outfile, " (flags \"");
-  bool seen_flag = false;
-#define DEF_EDGE_FLAG(NAME,IDX) \
+  if (e->flags)
+    {
+      fprintf (outfile, " (flags \"");
+      bool seen_flag = false;
+#define DEF_EDGE_FLAG(NAME,IDX)                        \
   do {                                         \
     if (e->flags & EDGE_##NAME)                        \
       {                                                \
@@ -75,7 +77,10 @@ print_edge (FILE *outfile, edge e, bool from)
 #include "cfg-flags.def"
 #undef DEF_EDGE_FLAG
 
-  fprintf (outfile, "\"))\n");
+      fprintf (outfile, "\")");
+    }
+
+  fprintf (outfile, ")\n");
 }
 
 /* If BB is non-NULL, print the start of a "(block)" directive for it
@@ -132,7 +137,9 @@ can_have_basic_block_p (const rtx_insn *insn)
    If COMPACT, then instructions are printed in a compact form:
    - INSN_UIDs are omitted, except for jumps and CODE_LABELs,
    - INSN_CODEs are omitted,
-   - register numbers are omitted for hard and virtual regs
+   - register numbers are omitted for hard and virtual regs, and
+     non-virtual pseudos are offset relative to the first such reg, and
+     printed with a '%' sigil e.g. "%0" for (LAST_VIRTUAL_REGISTER + 1),
    - insn names are prefixed with "c" (e.g. "cinsn", "cnote", etc)
 
    Example output (with COMPACT==true):
@@ -148,13 +155,13 @@ can_have_basic_block_p (const rtx_insn *insn)
                       (reg:SI di [ i ])) "t.c":2
                   (nil))
         (cnote NOTE_INSN_FUNCTION_BEG)
-        (cinsn (set (reg:SI 89)
+        (cinsn (set (reg:SI %2)
                       (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
                               (const_int -4)) [1 i+0 S4 A32])) "t.c":3
                   (nil))
         (cinsn (parallel [
-                          (set (reg:SI 87 [ _2 ])
-                              (ashift:SI (reg:SI 89)
+                          (set (reg:SI %0 [ _2 ])
+                              (ashift:SI (reg:SI %2)
                                   (const_int 1)))
                           (clobber (reg:CC flags))
                       ]) "t.c":3
@@ -162,11 +169,11 @@ can_have_basic_block_p (const rtx_insn *insn)
                                   (const_int -4)) [1 i+0 S4 A32])
                           (const_int 1))
                       (nil)))
-        (cinsn (set (reg:SI 88 [ <retval> ])
-                      (reg:SI 87 [ _2 ])) "t.c":3
+        (cinsn (set (reg:SI %1 [ <retval> ])
+                      (reg:SI %0 [ _2 ])) "t.c":3
                   (nil))
         (cinsn (set (reg/i:SI ax)
-                      (reg:SI 88 [ <retval> ])) "t.c":4
+                      (reg:SI %1 [ <retval> ])) "t.c":4
                   (nil))
         (cinsn (use (reg/i:SI ax)) "t.c":4
                   (nil))
index f114cb4055deaf0302261950bf43e5c9653c18d1..46f3c4dc070381f7d776496ec8fff78dfc9cb8f9 100644 (file)
@@ -400,6 +400,14 @@ print_rtx_operand_code_r (const_rtx in_rtx)
 #endif
     if (flag_dump_unnumbered && is_insn)
       fputc ('#', outfile);
+    else if (flag_compact)
+      {
+       /* In compact mode, print pseudos with a '%' sigil following
+          by the regno, offset by (LAST_VIRTUAL_REGISTER + 1), so that the
+          first non-virtual pseudo is dumped as "%0".  */
+       gcc_assert (regno > LAST_VIRTUAL_REGISTER);
+       fprintf (outfile, " %%%d", regno - (LAST_VIRTUAL_REGISTER + 1));
+      }
     else
       fprintf (outfile, " %d", regno);