diff options
author | Diego Novillo <dnovillo@redhat.com> | 2005-04-15 16:18:25 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2005-04-15 10:18:25 -0600 |
commit | c764b8b1be5ae72fd733814be834fe4273386b28 (patch) | |
tree | 80dbf05a44de9056ffa338d5fc2299cec26a0127 /gcc/tree-vect-transform.c | |
parent | f559447165fa63dde8ece816a834b068ba72e2e6 (diff) | |
download | gcc-c764b8b1be5ae72fd733814be834fe4273386b28.zip gcc-c764b8b1be5ae72fd733814be834fe4273386b28.tar.gz gcc-c764b8b1be5ae72fd733814be834fe4273386b28.tar.bz2 |
tree-vect-transform.c (vectorizable_store): Mark necessary objects in the vectorized store needing renaming.
* tree-vect-transform.c (vectorizable_store): Mark necessary
objects in the vectorized store needing renaming. Update the
SSA graph for V_MAY_DEF operands in the original store.
From-SVN: r98189
Diffstat (limited to 'gcc/tree-vect-transform.c')
-rw-r--r-- | gcc/tree-vect-transform.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c index 52f5de3..e325ef8 100644 --- a/gcc/tree-vect-transform.c +++ b/gcc/tree-vect-transform.c @@ -856,8 +856,8 @@ vectorizable_store (tree stmt, block_stmt_iterator *bsi, tree *vec_stmt) enum machine_mode vec_mode; tree dummy; enum dr_alignment_support alignment_support_cheme; - v_may_def_optype v_may_defs; - int nv_may_defs, i; + ssa_op_iter iter; + tree def; /* Is vectorizable store? */ @@ -915,20 +915,16 @@ vectorizable_store (tree stmt, block_stmt_iterator *bsi, tree *vec_stmt) *vec_stmt = build2 (MODIFY_EXPR, vectype, data_ref, vec_oprnd1); vect_finish_stmt_generation (stmt, *vec_stmt, bsi); - /* Copy the V_MAY_DEFS representing the aliasing of the original array - element's definition to the vector's definition then update the - defining statement. The original is being deleted so the same - SSA_NAMEs can be used. */ - copy_virtual_operands (*vec_stmt, stmt); - v_may_defs = STMT_V_MAY_DEF_OPS (*vec_stmt); - nv_may_defs = NUM_V_MAY_DEFS (v_may_defs); + /* Mark all non-SSA variables in the statement for rewriting. */ + mark_new_vars_to_rename (*vec_stmt); - for (i = 0; i < nv_may_defs; i++) - { - tree ssa_name = V_MAY_DEF_RESULT (v_may_defs, i); - SSA_NAME_DEF_STMT (ssa_name) = *vec_stmt; - } - + /* The new vectorized statement will have better aliasing + information, so some of the virtual definitions of the old + statement will likely disappear from the IL. Mark them to have + their SSA form updated. */ + FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter, SSA_OP_VMAYDEF) + mark_sym_for_renaming (SSA_NAME_VAR (def)); + return true; } |