diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c4edde6f55b586eba6c37198e00723de9557a7c1..1e211c365d43648e10b023a7d3e404d8d6e0d70a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
+
+	* tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
+	after remove_phi_node.
+
 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
 
 	PR tree-optimization/42078
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 2ef6d76a40a6682641271246a11d519810e5e984..7e44f846590038008cf6d9d790d8dd870c7e8b24 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -4462,8 +4462,10 @@ remove_dead_inserted_code (void)
 	  if (gimple_code (t) == GIMPLE_PHI)
 	    remove_phi_node (&gsi, true);
 	  else
-	    gsi_remove (&gsi, true);
-	  release_defs (t);
+	    {
+	      gsi_remove (&gsi, true);
+	      release_defs (t);
+	    }
 	}
     }
   VEC_free (gimple, heap, worklist);