diff options
author | Jakub Jelinek <jakub@redhat.com> | 2013-06-25 14:35:21 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2013-06-25 14:35:21 +0200 |
commit | f6fdeb62ee716299062c8b9d70481709d8401b15 (patch) | |
tree | 2611724ce72ecc8b57a3170f0e0549f24c664069 /gcc/testsuite | |
parent | c13bc3d998b26a9d50c6bb07d0f8f372117e7a20 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/pr57705.c | 65 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-iv-7.c | 4 |
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" } } */ |