This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH][1/3] Release SSA names properly
- From: Richard Guenther <rguenther at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Date: Thu, 5 Apr 2012 11:41:13 +0200 (CEST)
- Subject: [PATCH][1/3] Release SSA names properly
This releases SSA names properly in some places.
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk.
Richard.
2012-02-10 Richard Guenther <rguenther@suse.de>
* tree-nrv.c (tree_nrv): Release VDEFs.
* tree-sra.c (sra_modify_constructor_assign): Likewise.
(sra_modify_assign): Likewise.
* tree-vect-stmts.c (vect_remove_stores): Likewise.
* tree-vect-loop.c (vect_transform_loop): Likewise.
* tree-ssa-dom.c (optimize_stmt): Likewise.
* tree-vect-slp.c (vect_schedule_slp): Likewise.
* tree-ssa-math-opts.c (execute_cse_sincos): Likewise.
Index: gcc/tree-nrv.c
===================================================================
*** gcc/tree-nrv.c.orig 2012-04-04 14:57:38.000000000 +0200
--- gcc/tree-nrv.c 2012-04-04 15:17:13.331595050 +0200
*************** tree_nrv (void)
*** 244,249 ****
--- 244,250 ----
{
unlink_stmt_vdef (stmt);
gsi_remove (&gsi, true);
+ release_defs (stmt);
}
else
{
Index: gcc/tree-sra.c
===================================================================
*** gcc/tree-sra.c.orig 2012-04-04 14:57:38.000000000 +0200
--- gcc/tree-sra.c 2012-04-04 15:17:13.334595082 +0200
*************** sra_modify_constructor_assign (gimple *s
*** 2821,2826 ****
--- 2821,2827 ----
{
unlink_stmt_vdef (*stmt);
gsi_remove (gsi, true);
+ release_defs (*stmt);
return SRA_AM_REMOVED;
}
else
*************** sra_modify_constructor_assign (gimple *s
*** 2844,2849 ****
--- 2845,2851 ----
init_subtree_with_zero (acc, gsi, false, loc);
unlink_stmt_vdef (*stmt);
gsi_remove (gsi, true);
+ release_defs (*stmt);
return SRA_AM_REMOVED;
}
else
*************** sra_modify_assign (gimple *stmt, gimple_
*** 3094,3099 ****
--- 3096,3102 ----
gsi_next (gsi);
unlink_stmt_vdef (*stmt);
gsi_remove (&orig_gsi, true);
+ release_defs (*stmt);
sra_stats.deleted++;
return SRA_AM_REMOVED;
}
*************** sra_modify_assign (gimple *stmt, gimple_
*** 3114,3119 ****
--- 3117,3123 ----
gcc_assert (*stmt == gsi_stmt (*gsi));
unlink_stmt_vdef (*stmt);
gsi_remove (gsi, true);
+ release_defs (*stmt);
sra_stats.deleted++;
return SRA_AM_REMOVED;
}
Index: gcc/tree-vect-stmts.c
===================================================================
*** gcc/tree-vect-stmts.c.orig 2012-04-04 14:57:38.000000000 +0200
--- gcc/tree-vect-stmts.c 2012-04-04 15:17:13.337595115 +0200
*************** vect_remove_stores (gimple first_stmt)
*** 5653,5659 ****
--- 5653,5661 ----
next = STMT_VINFO_RELATED_STMT (stmt_info);
/* Free the attached stmt_vec_info and remove the stmt. */
next_si = gsi_for_stmt (next);
+ unlink_stmt_vdef (next);
gsi_remove (&next_si, true);
+ release_defs (next);
free_stmt_vec_info (next);
next = tmp;
}
Index: gcc/tree-vect-loop.c
===================================================================
*** gcc/tree-vect-loop.c.orig 2012-04-04 14:57:38.000000000 +0200
--- gcc/tree-vect-loop.c 2012-04-04 15:17:13.338595125 +0200
*************** vect_transform_loop (loop_vec_info loop_
*** 5476,5483 ****
else
{
/* Free the attached stmt_vec_info and remove the stmt. */
! free_stmt_vec_info (gsi_stmt (si));
gsi_remove (&si, true);
continue;
}
}
--- 5476,5486 ----
else
{
/* Free the attached stmt_vec_info and remove the stmt. */
! gimple store = gsi_stmt (si);
! free_stmt_vec_info (store);
! unlink_stmt_vdef (store);
gsi_remove (&si, true);
+ release_defs (store);
continue;
}
}
Index: gcc/tree-ssa-dom.c
===================================================================
*** gcc/tree-ssa-dom.c.orig 2012-04-04 15:02:16.000000000 +0200
--- gcc/tree-ssa-dom.c 2012-04-04 15:17:52.463010484 +0200
*************** optimize_stmt (basic_block bb, gimple_st
*** 2301,2306 ****
--- 2301,2307 ----
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, " Flagged to clear EH edges.\n");
}
+ release_defs (stmt);
return;
}
}
Index: gcc/tree-vect-slp.c
===================================================================
*** gcc/tree-vect-slp.c.orig 2012-04-04 14:57:38.000000000 +0200
--- gcc/tree-vect-slp.c 2012-04-04 15:17:13.341595156 +0200
*************** vect_schedule_slp (loop_vec_info loop_vi
*** 3043,3049 ****
--- 3043,3051 ----
store = STMT_VINFO_RELATED_STMT (vinfo_for_stmt (store));
/* Free the attached stmt_vec_info and remove the stmt. */
gsi = gsi_for_stmt (store);
+ unlink_stmt_vdef (store);
gsi_remove (&gsi, true);
+ release_defs (store);
free_stmt_vec_info (store);
}
}
Index: gcc/tree-ssa-math-opts.c
===================================================================
*** gcc/tree-ssa-math-opts.c.orig 2012-04-04 15:03:35.000000000 +0200
--- gcc/tree-ssa-math-opts.c 2012-04-04 15:17:13.342595167 +0200
*************** execute_cse_sincos (void)
*** 1430,1435 ****
--- 1430,1437 ----
gimple_set_location (new_stmt, loc);
unlink_stmt_vdef (stmt);
gsi_replace (&gsi, new_stmt, true);
+ if (gimple_vdef (stmt))
+ release_ssa_name (gimple_vdef (stmt));
}
break;
*************** execute_cse_sincos (void)
*** 1450,1455 ****
--- 1452,1459 ----
gimple_set_location (new_stmt, loc);
unlink_stmt_vdef (stmt);
gsi_replace (&gsi, new_stmt, true);
+ if (gimple_vdef (stmt))
+ release_ssa_name (gimple_vdef (stmt));
}
break;
*************** execute_cse_sincos (void)
*** 1465,1470 ****
--- 1469,1476 ----
gimple_set_location (new_stmt, loc);
unlink_stmt_vdef (stmt);
gsi_replace (&gsi, new_stmt, true);
+ if (gimple_vdef (stmt))
+ release_ssa_name (gimple_vdef (stmt));
}
break;
Index: gcc/tree-eh.c
===================================================================
*** gcc/tree-eh.c.orig 2012-04-04 14:57:38.000000000 +0200
--- gcc/tree-eh.c 2012-04-04 15:17:13.343595178 +0200
*************** sink_clobbers (basic_block bb)
*** 3268,3279 ****
vdef = gimple_vdef (stmt);
if (vdef && TREE_CODE (vdef) == SSA_NAME)
{
vdef = SSA_NAME_VAR (vdef);
mark_sym_for_renaming (vdef);
gimple_set_vdef (stmt, vdef);
gimple_set_vuse (stmt, vdef);
}
- release_defs (stmt);
gsi_insert_before (&dgsi, stmt, GSI_SAME_STMT);
}
--- 3268,3279 ----
vdef = gimple_vdef (stmt);
if (vdef && TREE_CODE (vdef) == SSA_NAME)
{
+ release_ssa_name (vdef);
vdef = SSA_NAME_VAR (vdef);
mark_sym_for_renaming (vdef);
gimple_set_vdef (stmt, vdef);
gimple_set_vuse (stmt, vdef);
}
gsi_insert_before (&dgsi, stmt, GSI_SAME_STMT);
}
*************** cleanup_empty_eh_move_lp (basic_block bb
*** 3955,3961 ****
/* Delete the RESX that was matched within the empty handler block. */
gsi = gsi_last_bb (bb);
! mark_virtual_ops_for_renaming (gsi_stmt (gsi));
gsi_remove (&gsi, true);
/* Clean up E_OUT for the fallthru. */
--- 3955,3961 ----
/* Delete the RESX that was matched within the empty handler block. */
gsi = gsi_last_bb (bb);
! unlink_stmt_vdef (gsi_stmt (gsi));
gsi_remove (&gsi, true);
/* Clean up E_OUT for the fallthru. */