aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop.c
diff options
context:
space:
mode:
authorIra Rosen <irar@il.ibm.com>2012-02-05 05:58:18 +0000
committerIra Rosen <irar@gcc.gnu.org>2012-02-05 05:58:18 +0000
commit24ee13842edcacff46a4f06d3b469d0bdc6d0a73 (patch)
tree725e87b3955717cd08b8ed5276d6dcea3a4a8724 /gcc/tree-vect-loop.c
parent3bbdbe67bc710e5758250df8bfb995c7f0d6b3b5 (diff)
downloadgcc-24ee13842edcacff46a4f06d3b469d0bdc6d0a73.zip
gcc-24ee13842edcacff46a4f06d3b469d0bdc6d0a73.tar.gz
gcc-24ee13842edcacff46a4f06d3b469d0bdc6d0a73.tar.bz2
re PR tree-optimization/52091 (ICE: verify_gimple failed)
PR tree-optimization/52091 * tree-vectorizer.h (vect_is_simple_use): Add an argument. (vect_is_simple_use_1): Likewise. * tree-vect-loop.c (vectorizable_reduction): Update calls to vect_is_simple_use_1 and vect_is_simple_use. (vectorizable_live_operation): Likewise. * tree-vect-patterns.c (widened_name_p, vect_recog_vector_vector_shift_pattern, check_bool_pattern): Likewise. * tree-vect-stmts.c (process_use, vect_get_vec_def_for_operand, vectorizable_call, vectorizable_conversion, vectorizable_assignment, vectorizable_shift, vectorizable_operation, vectorizable_store, vectorizable_load): Likewise. (vect_is_simple_cond): Add an argument, pass it to vect_is_simple_use_1. (vectorizable_condition): Update calls to vect_is_simple_cond, vect_is_simple_use. (vect_is_simple_use): Add an argument, the statement in which OPERAND is used. Check that if OPERAND's def stmt is a double reduction phi node, the use is a phi node too. (vect_is_simple_use_1): Add an argument, pass it to vect_is_simple_use. * tree-vect-slp.c (vect_get_and_check_slp_defs): Update a call to vect_is_simple_use. From-SVN: r183902
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r--gcc/tree-vect-loop.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index ae28ef6..051d340 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -1,5 +1,5 @@
/* Loop Vectorization
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Contributed by Dorit Naishlos <dorit@il.ibm.com> and
Ira Rosen <irar@il.ibm.com>
@@ -4486,7 +4486,7 @@ vectorizable_reduction (gimple stmt, gimple_stmt_iterator *gsi,
if (i == 0 && code == COND_EXPR)
continue;
- is_simple_use = vect_is_simple_use_1 (ops[i], loop_vinfo, NULL,
+ is_simple_use = vect_is_simple_use_1 (ops[i], stmt, loop_vinfo, NULL,
&def_stmt, &def, &dt, &tem);
if (!vectype_in)
vectype_in = tem;
@@ -4507,8 +4507,8 @@ vectorizable_reduction (gimple stmt, gimple_stmt_iterator *gsi,
}
}
- is_simple_use = vect_is_simple_use_1 (ops[i], loop_vinfo, NULL, &def_stmt,
- &def, &dt, &tem);
+ is_simple_use = vect_is_simple_use_1 (ops[i], stmt, loop_vinfo, NULL,
+ &def_stmt, &def, &dt, &tem);
if (!vectype_in)
vectype_in = tem;
gcc_assert (is_simple_use);
@@ -4864,14 +4864,14 @@ vectorizable_reduction (gimple stmt, gimple_stmt_iterator *gsi,
gimple dummy_stmt;
tree dummy;
- vect_is_simple_use (ops[!reduc_index], loop_vinfo, NULL,
+ vect_is_simple_use (ops[!reduc_index], stmt, 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,
+ vect_is_simple_use (op1, stmt, loop_vinfo, NULL, &dummy_stmt,
&dummy, &dt);
loop_vec_def1 = vect_get_vec_def_for_stmt_copy (dt,
loop_vec_def1);
@@ -5103,7 +5103,8 @@ vectorizable_live_operation (gimple stmt,
else
op = gimple_op (stmt, i + 1);
if (op
- && !vect_is_simple_use (op, loop_vinfo, NULL, &def_stmt, &def, &dt))
+ && !vect_is_simple_use (op, stmt, loop_vinfo, NULL, &def_stmt, &def,
+ &dt))
{
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "use not simple.");