diff options
author | Ira Rosen <irar@il.ibm.com> | 2010-04-18 12:20:34 +0000 |
---|---|---|
committer | Ira Rosen <irar@gcc.gnu.org> | 2010-04-18 12:20:34 +0000 |
commit | 59eefaa6dfaac01e645dadf727f25775f5d3aeed (patch) | |
tree | 1168143211cca644eab9114f3b94c6a3112efab8 | |
parent | 07b3ef2e78bde9831e45dbf4d83cec9a440ce585 (diff) | |
download | gcc-59eefaa6dfaac01e645dadf727f25775f5d3aeed.zip gcc-59eefaa6dfaac01e645dadf727f25775f5d3aeed.tar.gz gcc-59eefaa6dfaac01e645dadf727f25775f5d3aeed.tar.bz2 |
re PR tree-optimization/43771 (ICE on valid when compiling ParMetis with gcc 4.5.0 and -O3)
PR tree-optimization/43771
* tree-vect-slp.c (vect_supported_load_permutation_p): Check that
load permutation doesn't have gaps.
From-SVN: r158484
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/vect/pr43771.cc | 14 | ||||
-rw-r--r-- | gcc/tree-vect-slp.c | 6 |
4 files changed, 30 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 912670d..f88ff21 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 a926c84..901a727 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 0000000..1a2d09a --- /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 d25d347..afc4f31 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 |