On Mon, 2014-12-01 at 10:38 -0700, Jeff Law wrote:
> On 11/27/14 18:44, Segher Boessenkool wrote:
> > Currently reg_dead_at_p returns 0 for registers that are set but never
> > used.  This patch repairs that oversight.  This fixes PR59278.
> >
> >
> > 2014-11-27  Segher Boessenkool  <seg...@kernel.crashing.org>
> >
> > gcc/
> >     PR rtl-optimization/59278
> >     combine (reg_dead_at_p): Consider REG_UNUSED notes.
> OK with a testcase.  ISTM you can just create an SH specific testcase 
> from the code in the BZ.  Pre-approved with suitable testcase.
> 
> jeff
> 

Attached is the SH test case for the PR, which passes with the combine
patch applied for make -k check-gcc RUNTESTFLAGS="sh.exp=pr59278.c
--target_board=sh-sim\{-m4/-ml,-m4/-mb,-m2a/-mb,-m2/-mb}"

Cheers,
Oleg

testsuite/ChangeLog:
        * gcc.target/sh/pr59278.c: New.
Index: gcc/testsuite/gcc.target/sh/pr59278.c
===================================================================
--- gcc/testsuite/gcc.target/sh/pr59278.c	(revision 0)
+++ gcc/testsuite/gcc.target/sh/pr59278.c	(revision 0)
@@ -0,0 +1,19 @@
+/* Check that combine considers unused regs dead.  */
+/* { dg-do compile }  */
+/* { dg-options "-O1" }  */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*"} { "" } }  */
+/* { dg-final { scan-assembler "addc" } }  */
+
+struct result
+{
+  int a, b;
+};
+
+struct result
+test_00 (int a, int b, int d)
+{
+  struct result r;
+  r.a = a != b;
+  r.b = d + b + 1;
+  return r;
+}

Reply via email to