On Fri, 2016-12-16 at 10:32 -0500, David Malcolm wrote:
> On Fri, 2016-12-16 at 14:28 +0100, Bernd Schmidt wrote:
> > On 12/14/2016 05:57 PM, David Malcolm wrote:
> > > Any preferences? (or other syntax ideas?).  My preference is one
> > > of
> > > the
> > > currently-unused sigils e.g. "@3", or to wrap them in braces
> > > "{3}".
> > 
> > Either might work, I'd vaguely prefer <3> over {3} but they're
> > equivalent really. Maybe using "@" is simplest if it's unused.
> 
> I mostly implemented @, but ran into an issue: it leads to lexer
> errors
> when parsing "__RTL"-tagged functions within cc1, where the lexer
> complains about the stray CPP_ATSIGN token:
> 
>   gcc.dg/rtl/aarch64/asr_div1.c:12:25: error: stray '@' in program
> 
> We could add a flag to the preprocessor to support this token when
> within c_parser_parse_rtl_body, but it seems simpler to just use a
> different syntax: '<3>'.  I'm working on the '<3>' syntax.
> 
> Dave

I've implemented the "(reg:SI <3>)" syntax, and created updates to the
remaining parts of the patch kit to use it.

Successfully built stage1 and ran the selftests for all 191 targets
in config-list.mk (for the combined patch kit) - so it looks like this
syntax works for all of our supported targets.

The following patch implements the change for print-rtl.c.

OK for trunk assuming it passes bootstrap&regrtest?

gcc/ChangeLog:
        * print-rtl.c (rtx_writer::print_rtx_operand_code_r): For
        non-virtual pseudos in compact mode, wrap the regno in '<' and '>'
        rather than using a '%' prefix.
        * rtl-tests.c (selftest::test_dumping_regs): Update for above change.
---
 gcc/print-rtl.c | 8 ++++----
 gcc/rtl-tests.c | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c
index 77e6b05..d36589e 100644
--- a/gcc/print-rtl.c
+++ b/gcc/print-rtl.c
@@ -481,11 +481,11 @@ rtx_writer::print_rtx_operand_code_r (const_rtx in_rtx)
       fputc ('#', m_outfile);
     else if (m_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".  */
+       /* In compact mode, print pseudos with '< and '>' wrapping the regno,
+          offseting it by (LAST_VIRTUAL_REGISTER + 1), so that the
+          first non-virtual pseudo is dumped as "<0>".  */
        gcc_assert (regno > LAST_VIRTUAL_REGISTER);
-       fprintf (m_outfile, " %%%d", regno - (LAST_VIRTUAL_REGISTER + 1));
+       fprintf (m_outfile, " <%d>", regno - (LAST_VIRTUAL_REGISTER + 1));
       }
     else
       fprintf (m_outfile, " %d", regno);
diff --git a/gcc/rtl-tests.c b/gcc/rtl-tests.c
index bd918a7..07ceac7 100644
--- a/gcc/rtl-tests.c
+++ b/gcc/rtl-tests.c
@@ -104,9 +104,9 @@ test_dumping_regs ()
     }
 
   /* Test dumping of non-virtual pseudos.  */
-  ASSERT_RTL_DUMP_EQ ("(reg:SI %0)",
+  ASSERT_RTL_DUMP_EQ ("(reg:SI <0>)",
     gen_raw_REG (SImode, LAST_VIRTUAL_REGISTER + 1));
-  ASSERT_RTL_DUMP_EQ ("(reg:SI %1)",
+  ASSERT_RTL_DUMP_EQ ("(reg:SI <1>)",
     gen_raw_REG (SImode, LAST_VIRTUAL_REGISTER + 2));
 }
 
-- 
1.8.5.3

Reply via email to