[PATCH] Show INSN_UIDs in compact mode

David Malcolm dmalcolm@redhat.com
Wed Oct 26 18:19:00 GMT 2016


On Thu, 2016-10-20 at 16:11 +0200, Bernd Schmidt wrote:
> On 10/20/2016 03:55 PM, David Malcolm wrote:
> > Currently the jump insn in question looks like this:
> > 
> >       (cjump_insn (set (pc)
> >                     (label_ref 20))
> >                  (nil))
> > 
> > With explicit INSN_UIDs it would look like this:
> > 
> >       (cjump_insn 13 (set (pc)
> >                     (label_ref 20))
> >                  (nil))
> 
> Yeah, that wouldn't be so bad. It would also make it easier to make a
> -fdump-rtl-compact flag that changes the debugging dumps to use the
> compact format (we'd still need slightly different output for
> pseudos).

[...snip...]

The following patch adds back in the INSN_UID for all insns.

Successfully bootstrapped&regrtested on x86_64-pc-linux-gnu.

OK for trunk?

gcc/ChangeLog:
	* print-rtl.c (rtx_writer::print_rtx_operand_code_u): Print
	INSN_UIDs for all insns in compact mode.
	(rtx_writer::print_rtx): Likewise.
	* print-rtl.h (rtx_writer::flag_compact): Update comment.
	* rtl-tests.c (selftest::test_dumping_insns): Update expected
	output to include INSN_UID.
	(selftest::test_uncond_jump): Likewise.
---
 gcc/print-rtl.c | 10 ++++------
 gcc/print-rtl.h |  2 +-
 gcc/rtl-tests.c |  4 ++--
 3 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c
index d0ba896..341ecdf 100644
--- a/gcc/print-rtl.c
+++ b/gcc/print-rtl.c
@@ -423,8 +423,8 @@ rtx_writer::print_rtx_operand_code_r (const_rtx in_rtx)
 void
 rtx_writer::print_rtx_operand_code_u (const_rtx in_rtx, int idx)
 {
-  /* Don't print insn UIDs in compact mode, apart from in LABEL_REFs.  */
-  if (m_compact && GET_CODE (in_rtx) != LABEL_REF)
+  /* Don't print insn UIDs for PREV/NEXT_INSN in compact mode.  */
+  if (m_compact && INSN_CHAIN_CODE_P (GET_CODE (in_rtx)) && idx < 2)
     return;
 
   if (XEXP (in_rtx, idx) != NULL)
@@ -672,10 +672,8 @@ rtx_writer::print_rtx (const_rtx in_rtx)
     idx = 5;
 #endif
 
-  /* For insns, print the INSN_UID.
-     In compact mode, we only print the INSN_UID of CODE_LABELs.  */
-  if (INSN_CHAIN_CODE_P (GET_CODE (in_rtx))
-      && (!m_compact || GET_CODE (in_rtx) == CODE_LABEL))
+  /* For insns, print the INSN_UID.  */
+  if (INSN_CHAIN_CODE_P (GET_CODE (in_rtx)))
     {
       if (flag_dump_unnumbered)
 	fprintf (m_outfile, " #");
diff --git a/gcc/print-rtl.h b/gcc/print-rtl.h
index 4ebfcf9..8496ffa 100644
--- a/gcc/print-rtl.h
+++ b/gcc/print-rtl.h
@@ -50,7 +50,7 @@ class rtx_writer
   bool m_simple;
 
   /* If true, use compact dump format:
-     - INSN_UIDs are omitted, except for jumps and CODE_LABELs,
+     - PREV/NEXT_INSN UIDs are omitted
      - INSN_CODEs are omitted,
      - register numbers are omitted for hard and virtual regs, and
        non-virtual pseudos are offset relative to the first such reg, and
diff --git a/gcc/rtl-tests.c b/gcc/rtl-tests.c
index 43665ba..4e534b2 100644
--- a/gcc/rtl-tests.c
+++ b/gcc/rtl-tests.c
@@ -121,7 +121,7 @@ test_dumping_insns ()
   /* Barriers.  */
   rtx_barrier *barrier = as_a <rtx_barrier *> (rtx_alloc (BARRIER));
   SET_NEXT_INSN (barrier) = NULL;
-  ASSERT_RTL_DUMP_EQ ("(cbarrier)\n", barrier);
+  ASSERT_RTL_DUMP_EQ ("(cbarrier 0)\n", barrier);
 
   /* Labels.  */
   rtx_insn *label = gen_label_rtx ();
@@ -179,7 +179,7 @@ test_uncond_jump ()
   ASSERT_TRUE (onlyjump_p (jump_insn));
   ASSERT_TRUE (control_flow_insn_p (jump_insn));
 
-  ASSERT_RTL_DUMP_EQ ("(cjump_insn (set (pc)\n"
+  ASSERT_RTL_DUMP_EQ ("(cjump_insn 1 (set (pc)\n"
 		      "        (label_ref 0))\n"
 		      "     (nil))\n",
 		      jump_insn);
-- 
1.8.5.3



More information about the Gcc-patches mailing list