aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleg Endo <olegendo@gcc.gnu.org>2012-11-01 21:28:49 +0000
committerOleg Endo <olegendo@gcc.gnu.org>2012-11-01 21:28:49 +0000
commitc291b2adc6f25d897928c79f431d987eb74e4bc5 (patch)
treebba086ddcde20217cde367590c31982425bec787
parentd4ac4ce2d38ef15977539ab5cd33876470011c3c (diff)
downloadgcc-c291b2adc6f25d897928c79f431d987eb74e4bc5.zip
gcc-c291b2adc6f25d897928c79f431d987eb74e4bc5.tar.gz
gcc-c291b2adc6f25d897928c79f431d987eb74e4bc5.tar.bz2
re PR target/55160 (Counterproductive loop induction variable optimization)
PR target/55160 * gcc.target/sh/pr55160.c: New. From-SVN: r193071
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/sh/pr55160.c25
2 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9b8914f..9c59446 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-11-01 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/55160
+ * gcc.target/sh/pr55160.c: New.
+
2012-11-01 David Edelsohn <dje.gcc@gmail.com>
* gcc.target/powerpc/vsx-mass-1.c: Check for dot symbols in
diff --git a/gcc/testsuite/gcc.target/sh/pr55160.c b/gcc/testsuite/gcc.target/sh/pr55160.c
new file mode 100644
index 0000000..ae0d83a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr55160.c
@@ -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;
+}