diff options
author | Richard Guenther <rguenther@suse.de> | 2012-08-01 11:48:04 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2012-08-01 11:48:04 +0000 |
commit | 137143106086c762d05037b4d420c1eaf8fe6fbc (patch) | |
tree | 103b768984c681c0e66bf0bd7b06f89dbdc9cce1 /gcc/tree-ssa-loop-im.c | |
parent | d04aacfc87503addc886a6a0ee9e69d73ffc280f (diff) | |
download | gcc-137143106086c762d05037b4d420c1eaf8fe6fbc.zip gcc-137143106086c762d05037b4d420c1eaf8fe6fbc.tar.gz gcc-137143106086c762d05037b4d420c1eaf8fe6fbc.tar.bz2 |
tree-flow.h (struct gimple_df): Remove syms_to_rename member, add ssa_renaming_needed and rename_vops flags.
2012-08-01 Richard Guenther <rguenther@suse.de>
* tree-flow.h (struct gimple_df): Remove syms_to_rename member,
add ssa_renaming_needed and rename_vops flags.
(SYMS_TO_RENAME): Remove.
(symbol_marked_for_renaming): Likewise.
(mark_virtual_ops_for_renaming): Likewise.
* tree-into-ssa.c (symbols_to_rename_set, symbols_to_rename):
New globals.
(mark_for_renaming, marked_for_renaming): New functions.
(symbol_marked_for_renaming): Remove.
(dump_currdefs): Adjust.
(maybe_replace_use): Likewise.
(maybe_replace_use_in_debug_stmt): Likewise.
(maybe_register_def): Likewise.
(rewrite_update_phi_arguments): Likewise.
(rewrite_update_enter_block): Likewise.
(fini_ssa_renamer): Clear update SSA status here ...
(delete_update_ssa): ... not here. Free rename set.
(prepare_block_for_update): Compute which decls need renaming.
(dump_update_ssa): Adjust.
(mark_sym_for_renaming): Adjust update SSA status for virtuals.
(need_ssa_update_p): Adjust.
(insert_updated_phi_nodes_for): Likewise.
(update_ssa): Likewise.
* tree-ssa-operands.c (finalize_ssa_defs): Adjust update SSA status
for virtual and real operands.
(finalize_ssa_uses): Likewise.
* tree-ssanames.c (init_ssanames): Adjust.
* tree-ssa.c (maybe_rewrite_mem_ref_base, maybe_optimize_var,
execute_update_addresses_taken): Add bitmap to keep track of which
candidates are suitable for rewriting and later renaming by SSA
update.
* matrix-reorg.c (transform_access_sites): Do not rename all defs.
* tree-dfa.c (make_rename_temp): Do not mark real operands for renaming.
* cgraphunit.c (assemble_thunk): Likewise.
* gimplify.c (gimple_regimplify_operands): Likewise.
(force_gimple_operand_1): Likewise.
* ipa-prop.c (ipa_modify_formal_parameters): Likewise.
* tree-inline.c (declare_return_variable): Likewise.
* tree-parloops.c (separate_decls_in_region_stmt): Do not call
mark_virtual_ops_for_renaming.
(create_stores_for_reduction): Likewise.
(create_loads_and_stores_for_name): Likewise.
* tree-predcom.c (mark_virtual_ops_for_renaming): Remove.
(initialize_root_vars_lm): Do not call mark_virtual_ops_for_renaming.
(execute_load_motion): Likewise.
(remove_stmt): Likewise.
(execute_pred_commoning_chain): Likewise.
* tree-sra.c (create_access_replacement): Do not rename real
operands.
(get_unrenamed_access_replacement): Unify with ...
(get_access_replacement): ... this.
(get_repl_default_def_ssa_name): Adjust.
* tree-ssa-loop-im.c (move_computations_stmt): Manually update
virtual SSA form.
(rewrite_mem_ref_loc): Do not call mark_virtual_ops_for_renaming.
* tree-ssa-loop-prefetch.c (emit_mfence_after_loop): Likewise.
From-SVN: r190033
Diffstat (limited to 'gcc/tree-ssa-loop-im.c')
-rw-r--r-- | gcc/tree-ssa-loop-im.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c index 541b8c2..558df40 100644 --- a/gcc/tree-ssa-loop-im.c +++ b/gcc/tree-ssa-loop-im.c @@ -1291,6 +1291,8 @@ move_computations_stmt (struct dom_walk_data *dw_data, for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); ) { + edge e; + stmt = gsi_stmt (bsi); lim_data = get_lim_data (stmt); @@ -1323,9 +1325,26 @@ move_computations_stmt (struct dom_walk_data *dw_data, cost, level->num); } - mark_virtual_ops_for_renaming (stmt); + e = loop_preheader_edge (level); + gcc_assert (!gimple_vdef (stmt)); + if (gimple_vuse (stmt)) + { + /* The new VUSE is the one from the virtual PHI in the loop + header or the one already present. */ + gimple_stmt_iterator gsi2; + for (gsi2 = gsi_start_phis (e->dest); + !gsi_end_p (gsi2); gsi_next (&gsi2)) + { + gimple phi = gsi_stmt (gsi2); + if (!is_gimple_reg (gimple_phi_result (phi))) + { + gimple_set_vuse (stmt, PHI_ARG_DEF_FROM_EDGE (phi, e)); + break; + } + } + } gsi_remove (&bsi, false); - gsi_insert_on_edge (loop_preheader_edge (level), stmt); + gsi_insert_on_edge (e, stmt); } } @@ -1783,7 +1802,6 @@ mem_refs_may_alias_p (tree mem1, tree mem2, struct pointer_map_t **ttae_cache) static void rewrite_mem_ref_loc (mem_ref_loc_p loc, tree tmp_var) { - mark_virtual_ops_for_renaming (loc->stmt); *loc->ref = tmp_var; update_stmt (loc->stmt); } |