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 <[email protected]>
> >
> > 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;
+}