aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr68817.f9011
-rw-r--r--gcc/tree-vect-slp.c2
4 files changed, 24 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e68d688..13f4154 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-12-10 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/68817
+ * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Detect
+ gaps early.
+
2015-12-10 Ilya Enkovich <enkovich.gnu@gmail.com>
* tree-vect-stmts.c (vectorizable_assignment): Support
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 499ec0d..40bfb45 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-12-10 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/68817
+ * gfortran.dg/pr68817.f90: New testcase.
+
2015-12-10 Christophe Lyon <christophe.lyon@linaro.org>
Revert [testsuite][ARM target attributes] Fix effective_target tests
diff --git a/gcc/testsuite/gfortran.dg/pr68817.f90 b/gcc/testsuite/gfortran.dg/pr68817.f90
new file mode 100644
index 0000000..606b430
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr68817.f90
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! { dg-options "-O3 -ffast-math" }
+ SUBROUTINE TEST(A,B,C)
+ DIMENSION B(3),C(1000,10)
+ DO I = 1,3
+ I3=I*3
+ B(1) = B(1) + (C(K,I3+1)-A)
+ B(3) = B(3) + (C(K,I3+3)-A)
+ ENDDO
+ END
+
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index b893682..5be2f90 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -1237,6 +1237,8 @@ vect_attempt_slp_rearrange_stmts (slp_instance slp_instn)
bitmap_clear (load_index);
FOR_EACH_VEC_ELT (node->load_permutation, i, lidx)
{
+ if (lidx >= group_size)
+ return false;
if (bitmap_bit_p (load_index, lidx))
{
sbitmap_free (load_index);