On Thu, 2012-11-01 at 02:31 -0400, Joern Rennecke wrote: > gen_doloop_end_split creates a pattern that sets pc, hence emit_jump_insn > has to be used instead of emit_insn. > > Committed as obvious.
I'd like to add a test case for this. Attached patch was tested with make -k check-gcc RUNTESTFLAGS="sh.exp=pr55160.c --target_board=sh-sim \{-m2/-ml,-m2/-mb,-m2a/-mb,-m4/-ml,-m4/-mb,-m4a/-ml,-m4a/-mb}" OK to install? Cheers, Oleg testsuite/ChangeLog: PR target/55160 * gcc.target/sh/pr55160.c: New.
Index: gcc/testsuite/gcc.target/sh/pr55160.c =================================================================== --- gcc/testsuite/gcc.target/sh/pr55160.c (revision 0) +++ gcc/testsuite/gcc.target/sh/pr55160.c (revision 0) @@ -0,0 +1,25 @@ +/* Check that the decrement-and-test instruction is generated. */ +/* { dg-do compile { target "sh*-*-*" } } */ +/* { dg-options "-O1" } */ +/* { dg-skip-if "" { "sh*-*-*" } { "-m5*"} { "" } } */ +/* { dg-final { scan-assembler-times "dt\tr" 2 } } */ + +int +test_00 (int* x, int c) +{ + int s = 0; + int i; + for (i = 0; i < c; ++i) + s += x[i]; + return s; +} + +int +test_01 (int* x, int c) +{ + int s = 0; + int i; + for (i = 0; i < c; ++i) + s += *--x; + return s; +}