summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorirar <irar@138bc75d-0d04-0410-961f-82ee72b054a4>2010-04-18 12:20:34 +0000
committerirar <irar@138bc75d-0d04-0410-961f-82ee72b054a4>2010-04-18 12:20:34 +0000
commit4cfb69c8e9749f2d73296dbb753a7276afe78858 (patch)
tree1168143211cca644eab9114f3b94c6a3112efab8
parent7203f8f0f9065b1201478f93bfa3557d24f59859 (diff)
downloadgcc-4cfb69c8e9749f2d73296dbb753a7276afe78858.tar.gz
PR tree-optimization/43771
* tree-vect-slp.c (vect_supported_load_permutation_p): Check that load permutation doesn't have gaps. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158484 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/vect/pr43771.cc14
-rw-r--r--gcc/tree-vect-slp.c6
4 files changed, 30 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 912670d50dd..f88ff216565 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2010-04-18 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/43771
+ * tree-vect-slp.c (vect_supported_load_permutation_p): Check that
+ load permutation doesn't have gaps.
+
2010-04-18 Jan Hubicka <jh@suse.cz>
* i386.md (UNSPEC_SSE_PROLOGUE_SAVE_LOW): New.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a926c843534..901a727587c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-04-18 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/43771
+ * g++.dg/vect/pr43771.cc: New test.
+
2010-04-17 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/31538
diff --git a/gcc/testsuite/g++.dg/vect/pr43771.cc b/gcc/testsuite/g++.dg/vect/pr43771.cc
new file mode 100644
index 00000000000..1a2d09aae93
--- /dev/null
+++ b/gcc/testsuite/g++.dg/vect/pr43771.cc
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+
+void KWayNodeRefine__(int nparts, int *gpwgts, int *badminpwgt, int
+*badmaxpwgt)
+{
+ int i;
+
+ for (i=0; i<nparts; i+=2) {
+ badminpwgt[i] = badminpwgt[i+1] = gpwgts[i]+gpwgts[i+1];
+ badmaxpwgt[i] = badmaxpwgt[i+1] = gpwgts[i]+gpwgts[i+1];
+ }
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index d25d34787e0..afc4f311078 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -844,7 +844,11 @@ vect_supported_load_permutation_p (slp_instance slp_instn, int group_size,
SET_BIT (load_index, prev);
}
-
+
+ for (j = 0; j < group_size; j++)
+ if (!TEST_BIT (load_index, j))
+ return false;
+
sbitmap_free (load_index);
if (supported && i == group_size * group_size