]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
sched-vis.c (print_pattern): Print SEQUENCE of insns as insns.
authorSteven Bosscher <steven@gcc.gnu.org>
Tue, 9 Apr 2013 15:02:41 +0000 (15:02 +0000)
committerSteven Bosscher <steven@gcc.gnu.org>
Tue, 9 Apr 2013 15:02:41 +0000 (15:02 +0000)
* sched-vis.c (print_pattern): Print SEQUENCE of insns as insns.

From-SVN: r197640

gcc/ChangeLog
gcc/sched-vis.c

index 6fa36f92058293c3f1ad62a21b0ad79cb63efa1d..6181c6741ae946e3eaa63692942a12c272b599a8 100644 (file)
@@ -1,5 +1,7 @@
 2013-04-09  Steven Bosscher  <steven@gcc.gnu.org>
 
+       * sched-vis.c (print_pattern): Print SEQUENCE of insns as insns.
+
        * config/sparc/sparc.md: Use define_c_enum for "unspec" and "unspecv".
 
 2013-04-09  Marek Polacek  <polacek@redhat.com>
index 1dc1420935518625dc31495d34fe13bf3d5ca6b5..763230ccdb2bd5638ddcc4cf6c2ac63e57a853ec 100644 (file)
@@ -51,6 +51,9 @@ along with GCC; see the file COPYING3.  If not see
 static bool rtl_slim_pp_initialized = false;
 static pretty_printer rtl_slim_pp;
 
+/* For insns we print patterns, and for some patterns we print insns...  */
+static void print_insn_with_notes (pretty_printer *, const_rtx);
+
 /* This recognizes rtx'en classified as expressions.  These are always
    represent some action on values or results of other expression, that
    may be stored in objects representing values.  */
@@ -562,13 +565,31 @@ print_pattern (pretty_printer *pp, const_rtx x, int verbose)
       break;
     case SEQUENCE:
       {
-       int i;
-
        pp_string (pp, "sequence{");
-       for (i = 0; i < XVECLEN (x, 0); i++)
+       if (INSN_P (XVECEXP (x, 0, 0)))
          {
-           print_pattern (pp, XVECEXP (x, 0, i), verbose);
-           pp_character (pp, ';');
+           /* Print the sequence insns indented.  */
+           const char * save_print_rtx_head = print_rtx_head;
+           char indented_print_rtx_head[32];
+
+           pp_newline (pp);
+           gcc_assert (strlen (print_rtx_head) < sizeof (indented_print_rtx_head) - 4);
+           snprintf (indented_print_rtx_head,
+                     sizeof (indented_print_rtx_head),
+                     "%s     ", print_rtx_head);
+           print_rtx_head = indented_print_rtx_head;
+           for (int i = 0; i < XVECLEN (x, 0); i++)
+             print_insn_with_notes (pp, XVECEXP (x, 0, i));
+           pp_printf (pp, "%s      ", save_print_rtx_head);
+           print_rtx_head = save_print_rtx_head;
+         }
+       else
+         {
+           for (int i = 0; i < XVECLEN (x, 0); i++)
+             {
+               print_pattern (pp, XVECEXP (x, 0, i), verbose);
+               pp_character (pp, ';');
+             }
          }
        pp_character (pp, '}');
       }