re PR tree-optimization/50014 (Assertion failed in vect_get_vec_def_for_stmt_copy)
PR tree-optimization/50014 * tree-vect-loop.c (vectorizable_reduction): Get def type before calling vect_get_vec_def_for_stmt_copy (). From-SVN: r177581
This commit is contained in:
parent
4869704e21
commit
1684ca6b9b
4 changed files with 38 additions and 5 deletions
|
@ -1,3 +1,9 @@
|
|||
2011-08-09 Ira Rosen <ira.rosen@linaro.org>
|
||||
|
||||
PR tree-optimization/50014
|
||||
* tree-vect-loop.c (vectorizable_reduction): Get def type before
|
||||
calling vect_get_vec_def_for_stmt_copy ().
|
||||
|
||||
2011-08-08 Vladimir Makarov <vmakarov@redhat.com>
|
||||
|
||||
PR rtl-optimization/49990
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2011-08-09 Ira Rosen <ira.rosen@linaro.org>
|
||||
|
||||
PR tree-optimization/50014
|
||||
* gcc.dg/vect/pr50014.c: New test.
|
||||
|
||||
2011-08-08 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR middle-end/49923
|
||||
|
|
16
gcc/testsuite/gcc.dg/vect/pr50014.c
Normal file
16
gcc/testsuite/gcc.dg/vect/pr50014.c
Normal file
|
@ -0,0 +1,16 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-require-effective-target vect_int } */
|
||||
|
||||
int f(unsigned char *s, int n)
|
||||
{
|
||||
int sum = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
sum += 256 * s[i];
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
/* { dg-final { cleanup-tree-dump "vect" } } */
|
||||
|
|
@ -4318,7 +4318,7 @@ vectorizable_reduction (gimple stmt, gimple_stmt_iterator *gsi,
|
|||
VEC (tree, heap) *vec_oprnds0 = NULL, *vec_oprnds1 = NULL, *vect_defs = NULL;
|
||||
VEC (gimple, heap) *phis = NULL;
|
||||
int vec_num;
|
||||
tree def0, def1, tem;
|
||||
tree def0, def1, tem, op0, op1 = NULL_TREE;
|
||||
|
||||
/* In case of reduction chain we switch to the first stmt in the chain, but
|
||||
we don't update STMT_INFO, since only the last stmt is marked as reduction
|
||||
|
@ -4775,8 +4775,6 @@ vectorizable_reduction (gimple stmt, gimple_stmt_iterator *gsi,
|
|||
/* Handle uses. */
|
||||
if (j == 0)
|
||||
{
|
||||
tree op0, op1 = NULL_TREE;
|
||||
|
||||
op0 = ops[!reduc_index];
|
||||
if (op_type == ternary_op)
|
||||
{
|
||||
|
@ -4806,11 +4804,19 @@ vectorizable_reduction (gimple stmt, gimple_stmt_iterator *gsi,
|
|||
{
|
||||
if (!slp_node)
|
||||
{
|
||||
enum vect_def_type dt = vect_unknown_def_type; /* Dummy */
|
||||
loop_vec_def0 = vect_get_vec_def_for_stmt_copy (dt, loop_vec_def0);
|
||||
enum vect_def_type dt;
|
||||
gimple dummy_stmt;
|
||||
tree dummy;
|
||||
|
||||
vect_is_simple_use (ops[!reduc_index], loop_vinfo, NULL,
|
||||
&dummy_stmt, &dummy, &dt);
|
||||
loop_vec_def0 = vect_get_vec_def_for_stmt_copy (dt,
|
||||
loop_vec_def0);
|
||||
VEC_replace (tree, vec_oprnds0, 0, loop_vec_def0);
|
||||
if (op_type == ternary_op)
|
||||
{
|
||||
vect_is_simple_use (op1, loop_vinfo, NULL, &dummy_stmt,
|
||||
&dummy, &dt);
|
||||
loop_vec_def1 = vect_get_vec_def_for_stmt_copy (dt,
|
||||
loop_vec_def1);
|
||||
VEC_replace (tree, vec_oprnds1, 0, loop_vec_def1);
|
||||
|
|
Loading…
Add table
Reference in a new issue