aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2013-06-25 14:35:21 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2013-06-25 14:35:21 +0200
commitf6fdeb62ee716299062c8b9d70481709d8401b15 (patch)
tree2611724ce72ecc8b57a3170f0e0549f24c664069 /gcc/testsuite
parentc13bc3d998b26a9d50c6bb07d0f8f372117e7a20 (diff)
downloadgcc-f6fdeb62ee716299062c8b9d70481709d8401b15.zip
gcc-f6fdeb62ee716299062c8b9d70481709d8401b15.tar.gz
gcc-f6fdeb62ee716299062c8b9d70481709d8401b15.tar.bz2
re PR tree-optimization/57705 (Non-constant step induction vars not vectorized)
PR tree-optimization/57705 * tree-vect-loop.c (vect_is_simple_iv_evolution): Allow SSA_NAME step, provided that it is not defined inside the loop. (vect_analyze_scalar_cycles_1): Disallow SSA_NAME step in nested loop. (get_initial_def_for_induction): Handle SSA_NAME IV step. * gcc.dg/vect/pr57705.c: New test. * gcc.dg/vect/vect-iv-7.c: Add noclone attribute, remove xfail. From-SVN: r200394
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr57705.c65
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-iv-7.c4
3 files changed, 73 insertions, 2 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 380fbf5..72826b6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2013-06-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57705
+ * gcc.dg/vect/pr57705.c: New test.
+ * gcc.dg/vect/vect-iv-7.c: Add noclone attribute, remove xfail.
+
2013-06-25 Martin Jambor <mjambor@suse.cz>
PR middle-end/57670
diff --git a/gcc/testsuite/gcc.dg/vect/pr57705.c b/gcc/testsuite/gcc.dg/vect/pr57705.c
new file mode 100644
index 0000000..2cacab4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr57705.c
@@ -0,0 +1,65 @@
+/* { dg-do run } */
+
+#include "tree-vect.h"
+
+int a[1024];
+unsigned char b[1024];
+
+extern void abort (void);
+
+__attribute__((noinline, noclone)) void
+foo (int k, int m)
+{
+ int i, k2 = k;
+ for (i = 0; i < 1024; i++)
+ {
+ a[i] = k2;
+ k2 += m + 1;
+ }
+}
+
+__attribute__((noinline, noclone)) void
+bar (int k, int m)
+{
+ int i, k2 = k;
+ for (i = 0; i < 1024; i++)
+ {
+ k2 += m + 1;
+ a[i] = k2;
+ }
+}
+
+__attribute__((noinline, noclone)) void
+baz (int k, int m)
+{
+ int i, k2 = k;
+ for (i = 0; i < 1024; i++)
+ {
+ a[i] = k2;
+ b[i] = i;
+ k2 += m + 1;
+ }
+}
+
+int
+main ()
+{
+ int i;
+ check_vect ();
+ foo (5, 3);
+ for (i = 0; i < 1024; i++)
+ if (a[i] != 5 + 4 * i)
+ abort ();
+ bar (5, 3);
+ for (i = 0; i < 1024; i++)
+ if (a[i] != 9 + 4 * i)
+ abort ();
+ baz (5, 3);
+ for (i = 0; i < 1024; i++)
+ if (a[i] != 5 + 4 * i || b[i] != (unsigned char) i)
+ abort ();
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 3 "vect" } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-iv-7.c b/gcc/testsuite/gcc.dg/vect/vect-iv-7.c
index 140d903..0d96ac2 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-iv-7.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-iv-7.c
@@ -6,7 +6,7 @@
#define N 16
int result[N] = {8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38};
-__attribute__ ((noinline)) int main1 (int X)
+__attribute__ ((noinline, noclone)) int main1 (int X)
{
int arr[N];
int k = 3;
@@ -38,5 +38,5 @@ int main (void)
return main1 (2);
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */