re PR tree-optimization/33804 (ICE in vect_transform_stmt, at tree-vect-transform.c:6131 with -ftree-vectorize)

PR tree-optimization/33804
	* tree-vect-transform.c (vectorizable_operation): Remove the
	checks that the vectorization is worthwhile from the transformation
	phase.

From-SVN: r129599
This commit is contained in:
Ira Rosen 2007-10-24 09:35:00 +00:00 committed by Ira Rosen
parent 20e545c381
commit 712f117220
4 changed files with 36 additions and 4 deletions

View file

@ -1,3 +1,10 @@
2007-10-24 Ira Rosen <irar@il.ibm.com>
PR tree-optimization/33804
* tree-vect-transform.c (vectorizable_operation): Remove the
checks that the vectorization is worthwhile from the transformation
phase.
2007-10-24 Ira Rosen <irar@il.ibm.com>
* tree-vect-analyze.c (vect_build_slp_tree): Return false if

View file

@ -1,3 +1,8 @@
2007-10-24 Ira Rosen <irar@il.ibm.com>
PR tree-optimization/33804
* gcc.dg/vect/pr33804.c: New testcase.
2007-10-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR forrtran/33849

View file

@ -0,0 +1,17 @@
/* { dg-do compile } */
/* { dg-require-effective-target vect_int } */
void f(unsigned char *s, unsigned char *d, int n) {
int i;
for (i = 0; i < n; i += 4) {
d[i + 0] += s[i + 0];
d[i + 1] += s[i + 1];
d[i + 2] += s[i + 2];
d[i + 3] += s[i + 3];
}
}
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */

View file

@ -3858,18 +3858,21 @@ vectorizable_operation (tree stmt, block_stmt_iterator *bsi, tree *vec_stmt,
{
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "op not supported by target.");
/* Check only during analysis. */
if (GET_MODE_SIZE (vec_mode) != UNITS_PER_WORD
|| LOOP_VINFO_VECT_FACTOR (loop_vinfo)
< vect_min_worthwhile_factor (code))
|| (LOOP_VINFO_VECT_FACTOR (loop_vinfo)
< vect_min_worthwhile_factor (code)
&& !vec_stmt))
return false;
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "proceeding using word mode.");
}
/* Worthwhile without SIMD support? */
/* Worthwhile without SIMD support? Check only during analysis. */
if (!VECTOR_MODE_P (TYPE_MODE (vectype))
&& LOOP_VINFO_VECT_FACTOR (loop_vinfo)
< vect_min_worthwhile_factor (code))
< vect_min_worthwhile_factor (code)
&& !vec_stmt)
{
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "not worthwhile without SIMD support.");