diff options
author | Ira Rosen <irar@il.ibm.com> | 2012-02-05 05:58:18 +0000 |
---|---|---|
committer | Ira Rosen <irar@gcc.gnu.org> | 2012-02-05 05:58:18 +0000 |
commit | 24ee13842edcacff46a4f06d3b469d0bdc6d0a73 (patch) | |
tree | 725e87b3955717cd08b8ed5276d6dcea3a4a8724 /gcc/tree-vect-loop.c | |
parent | 3bbdbe67bc710e5758250df8bfb995c7f0d6b3b5 (diff) | |
download | gcc-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.c | 15 |
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."); |