aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-ssa-dse.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8273970..d4db335 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2012-04-05 Richard Guenther <rguenther@suse.de>
+ * tree-ssa-dse.c (dse_optimize_stmt): Remember the stmt
+ basic-block before removing it.
+
+2012-04-05 Richard Guenther <rguenther@suse.de>
+
* tree-ssanames.c (release_dead_ssa_names): Compact the SSA
version namespace as we release the freelist.
diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c
index 93ba425..1fdb26c 100644
--- a/gcc/tree-ssa-dse.c
+++ b/gcc/tree-ssa-dse.c
@@ -232,6 +232,8 @@ dse_optimize_stmt (gimple_stmt_iterator gsi)
gimple_get_lhs (use_stmt), 0)))
|| stmt_kills_ref_p (use_stmt, gimple_assign_lhs (stmt)))
{
+ basic_block bb;
+
/* If use_stmt is or might be a nop assignment, e.g. for
struct { ... } S a, b, *p; ...
b = a; b = b;
@@ -258,8 +260,9 @@ dse_optimize_stmt (gimple_stmt_iterator gsi)
unlink_stmt_vdef (stmt);
/* Remove the dead store. */
+ bb = gimple_bb (stmt);
if (gsi_remove (&gsi, true))
- bitmap_set_bit (need_eh_cleanup, gimple_bb (stmt)->index);
+ bitmap_set_bit (need_eh_cleanup, bb->index);
/* And release any SSA_NAMEs set in this statement back to the
SSA_NAME manager. */