2008-05-16 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 16 May 2008 08:38:12 +0000 (08:38 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 16 May 2008 08:38:12 +0000 (08:38 +0000)
* tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
on deletion of the last stmt.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@135412 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-ssa-propagate.c

index 77b9620..71edc97 100644 (file)
@@ -1,3 +1,8 @@
+2008-05-16  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
+       on deletion of the last stmt.
+
 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
 
        * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
index 1b40bf0..728a709 100644 (file)
@@ -1250,6 +1250,7 @@ substitute_and_fold (prop_value_t *prop_value, bool use_ranges_p)
              && (!(call = get_call_expr_in (stmt))
                  || !TREE_SIDE_EFFECTS (call)))
            {
+             block_stmt_iterator i2;
              if (dump_file && dump_flags & TDF_DETAILS)
                {
                  fprintf (dump_file, "Removing dead stmt ");
@@ -1257,10 +1258,10 @@ substitute_and_fold (prop_value_t *prop_value, bool use_ranges_p)
                  fprintf (dump_file, "\n");
                }
              prop_stats.num_dce++;
-             bsi_remove (&i, true);
+             bsi_prev (&i);
+             i2 = bsi_for_stmt (stmt);
+             bsi_remove (&i2, true);
              release_defs (stmt);
-             if (!bsi_end_p (i))
-               bsi_prev (&i);
              continue;
            }