re PR debug/42897 (yet another ice in verify_ssa)
authorAlexandre Oliva <aoliva@redhat.com>
Sat, 6 Mar 2010 20:30:10 +0000 (20:30 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Sat, 6 Mar 2010 20:30:10 +0000 (20:30 +0000)
PR debug/42897
* gimple-iterator.c (gsi_remove): Propagate only PHI DEFs removed
permanently.

From-SVN: r157259

gcc/ChangeLog
gcc/gimple-iterator.c
gcc/tree-phinodes.c

index 528ca32..dfbbb24 100644 (file)
@@ -1,6 +1,12 @@
 2010-03-06  Alexandre Oliva  <aoliva@redhat.com>
 
        PR debug/42897
+       * gimple-iterator.c (gsi_remove): Propagate only PHI DEFs removed
+       permanently.
+
+2010-03-06  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR debug/42897
        * tree-vect-loop.c (vect_transform_loop): Kill out-of-loop debug
        uses of relevant DEFs that are dead outside the loop too.
 
index 9a3c382..7d5d610 100644 (file)
@@ -474,7 +474,8 @@ gsi_remove (gimple_stmt_iterator *i, bool remove_permanently)
   gimple_seq_node cur, next, prev;
   gimple stmt = gsi_stmt (*i);
 
-  insert_debug_temps_for_defs (i);
+  if (gimple_code (stmt) != GIMPLE_PHI)
+    insert_debug_temps_for_defs (i);
 
   /* Free all the data flow information for STMT.  */
   gimple_set_bb (stmt, NULL);
index 6e63ed4..52aee78 100644 (file)
@@ -473,6 +473,10 @@ void
 remove_phi_node (gimple_stmt_iterator *gsi, bool release_lhs_p)
 {
   gimple phi = gsi_stmt (*gsi);
+
+  if (release_lhs_p)
+    insert_debug_temps_for_defs (gsi);
+
   gsi_remove (gsi, false);
 
   /* If we are deleting the PHI node, then we should release the