re PR tree-optimization/92205 (ICE in vect_get_vec_def_for_stmt_copy, at tree-vect-stmts.c:1688 since r277322)
2019-10-24 Richard Biener <rguenther@suse.de> PR tree-optimization/92205 * tree-vect-loop.c (vectorizable_reduction): Restrict search for alternate vectype_in to lane-reducing patterns we support. * gcc.dg/vect/pr92205.c: New testcase. From-SVN: r277375
This commit is contained in:
parent
ee80f0c6ba
commit
e227594789
4 changed files with 31 additions and 4 deletions
|
@ -1,3 +1,10 @@
|
|||
2019-10-24 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/92205
|
||||
* tree-vect-loop.c (vectorizable_reduction): Restrict
|
||||
search for alternate vectype_in to lane-reducing patterns
|
||||
we support.
|
||||
|
||||
2019-10-24 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/92203
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2019-10-24 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/92205
|
||||
* gcc.dg/vect/pr92205.c: New testcase.
|
||||
|
||||
2019-10-24 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/92203
|
||||
|
|
13
gcc/testsuite/gcc.dg/vect/pr92205.c
Normal file
13
gcc/testsuite/gcc.dg/vect/pr92205.c
Normal file
|
@ -0,0 +1,13 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-require-effective-target vect_int } */
|
||||
|
||||
int b(int n, unsigned char *a)
|
||||
{
|
||||
int d = 0;
|
||||
a = __builtin_assume_aligned (a, __BIGGEST_ALIGNMENT__);
|
||||
for (int c = 0; c < n; ++c)
|
||||
d |= a[c];
|
||||
return d;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target { vect_unpack && { ! vect_no_bitwise } } } } } */
|
|
@ -5697,6 +5697,8 @@ vectorizable_reduction (stmt_vec_info stmt_info, slp_tree slp_node,
|
|||
|
||||
gassign *stmt = as_a <gassign *> (stmt_info->stmt);
|
||||
enum tree_code code = gimple_assign_rhs_code (stmt);
|
||||
bool lane_reduc_code_p
|
||||
= (code == DOT_PROD_EXPR || code == WIDEN_SUM_EXPR || code == SAD_EXPR);
|
||||
int op_type = TREE_CODE_LENGTH (code);
|
||||
|
||||
scalar_dest = gimple_assign_lhs (stmt);
|
||||
|
@ -5749,8 +5751,10 @@ vectorizable_reduction (stmt_vec_info stmt_info, slp_tree slp_node,
|
|||
return false;
|
||||
|
||||
/* To properly compute ncopies we are interested in the widest
|
||||
input type in case we're looking at a widening accumulation. */
|
||||
if (tem
|
||||
non-reduction input type in case we're looking at a widening
|
||||
accumulation that we later handle in vect_transform_reduction. */
|
||||
if (lane_reduc_code_p
|
||||
&& tem
|
||||
&& (!vectype_in
|
||||
|| (GET_MODE_SIZE (SCALAR_TYPE_MODE (TREE_TYPE (vectype_in)))
|
||||
< GET_MODE_SIZE (SCALAR_TYPE_MODE (TREE_TYPE (tem))))))
|
||||
|
@ -6233,8 +6237,6 @@ vectorizable_reduction (stmt_vec_info stmt_info, slp_tree slp_node,
|
|||
&& vect_stmt_to_vectorize (use_stmt_info) == stmt_info)
|
||||
single_defuse_cycle = true;
|
||||
|
||||
bool lane_reduc_code_p
|
||||
= (code == DOT_PROD_EXPR || code == WIDEN_SUM_EXPR || code == SAD_EXPR);
|
||||
if (single_defuse_cycle || lane_reduc_code_p)
|
||||
{
|
||||
gcc_assert (code != COND_EXPR);
|
||||
|
|
Loading…
Add table
Reference in a new issue