tree-vect-slp.c (vect_build_slp_tree_1): For BB vectorization do not allow unrolling.

2015-05-12  Richard Biener  <rguenther@suse.de>

	* tree-vect-slp.c (vect_build_slp_tree_1): For BB vectorization
	do not allow unrolling.

	* gcc.dg/vect/bb-slp-35.c: New testcase.

From-SVN: r223033
This commit is contained in:
Richard Biener 2015-05-12 07:40:00 +00:00 committed by Richard Biener
parent 9b7df66f80
commit dfc55d308e
4 changed files with 35 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2015-05-12 Richard Biener <rguenther@suse.de>
* tree-vect-slp.c (vect_build_slp_tree_1): For BB vectorization
do not allow unrolling.
2015-05-11 Richard Henderson <rth@redhat.com>
* config/i386/i386-modes.def (CCP): New.

View File

@ -1,3 +1,7 @@
2015-05-12 Richard Biener <rguenther@suse.de>
* gcc.dg/vect/bb-slp-35.c: New testcase.
2015-05-11 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/66100

View File

@ -0,0 +1,13 @@
/* { dg-do compile } */
/* { dg-require-effective-target vect_int } */
void foo (int * __restrict__ p, short * __restrict__ q)
{
p[0] = q[0] + 1;
p[1] = q[1] + 1;
p[2] = q[2] + 1;
p[3] = q[3] + 1;
}
/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" } } */
/* { dg-final { cleanup-tree-dump "slp2" } } */

View File

@ -568,6 +568,19 @@ vect_build_slp_tree_1 (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
return false;
}
/* If populating the vector type requires unrolling then fail
before adjusting *max_nunits for basic-block vectorization. */
if (bb_vinfo
&& TYPE_VECTOR_SUBPARTS (vectype) > group_size)
{
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
"Build SLP failed: unrolling required "
"in basic block SLP\n");
/* Fatal mismatch. */
matches[0] = false;
return false;
}
/* In case of multiple types we need to detect the smallest type. */
if (*max_nunits < TYPE_VECTOR_SUBPARTS (vectype))
{