From: Richard Biener Date: Thu, 4 Apr 2013 15:06:44 +0000 (+0000) Subject: re PR tree-optimization/56826 (Run-fail after r197189.) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=314f64eb7d26e60585c0b5e2f8496d7cb1a81187;p=gcc.git re PR tree-optimization/56826 (Run-fail after r197189.) 2013-04-04 Richard Biener PR tree-optimization/56826 * tree-vect-slp.c (vect_build_slp_tree): Compute ncopies more accurately. * gcc.dg/vect/pr56826.c: New testcase. * gcc.dg/vect/O3-pr36098.c: Adjust. From-SVN: r197486 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 09f5ff5478a..970c0d97fd1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-04-04 Richard Biener + + PR tree-optimization/56826 + * tree-vect-slp.c (vect_build_slp_tree): Compute ncopies + more accurately. + 2013-04-04 Richard Biener PR tree-optimization/56213 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 06f6c981bf9..a65b101de03 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-04-04 Richard Biener + + PR tree-optimization/56826 + * gcc.dg/vect/pr56826.c: New testcase. + * gcc.dg/vect/O3-pr36098.c: Adjust. + 2013-04-04 Tejas Belagod * gcc.target/aarch64/inc/asm-adder-clobber-lr.c: Remove duplication. diff --git a/gcc/testsuite/gcc.dg/vect/O3-pr36098.c b/gcc/testsuite/gcc.dg/vect/O3-pr36098.c index 9e87b2372db..b0b8e3c9466 100644 --- a/gcc/testsuite/gcc.dg/vect/O3-pr36098.c +++ b/gcc/testsuite/gcc.dg/vect/O3-pr36098.c @@ -17,5 +17,5 @@ void foo (int ncons, t_sortblock *sb, int *iatom) iatom[m]=sb[i].iatom[m]; } -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/pr56826.c b/gcc/testsuite/gcc.dg/vect/pr56826.c new file mode 100644 index 00000000000..7a5c5ff4008 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr56826.c @@ -0,0 +1,41 @@ +extern void abort (void); + +typedef struct { + int a[3]; + int num; +} t1; +t1 B[100]; +int A[300]; + +void __attribute__((noinline,noclone)) +bar (int *A, t1 *B, int n) +{ + int i; + int *a = A; + for (i=0; i 1 + if ((unrolling_factor > 1 && GROUP_FIRST_ELEMENT (vinfo_for_stmt (stmt)) == stmt && GROUP_GAP (vinfo_for_stmt (stmt)) != 0) || (GROUP_FIRST_ELEMENT (vinfo_for_stmt (stmt)) != stmt @@ -767,6 +767,8 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo, /* Check that the size of interleaved loads group is not greater than the SLP group size. */ + unsigned ncopies + = vectorization_factor / TYPE_VECTOR_SUBPARTS (vectype); if (loop_vinfo && GROUP_FIRST_ELEMENT (vinfo_for_stmt (stmt)) == stmt && ((GROUP_SIZE (vinfo_for_stmt (stmt))