From cd6549e843ab1b0b32621e2d6471e183d6600f0f Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Sat, 6 Mar 2010 20:30:10 +0000 Subject: [PATCH] re PR debug/42897 (yet another ice in verify_ssa) PR debug/42897 * gimple-iterator.c (gsi_remove): Propagate only PHI DEFs removed permanently. From-SVN: r157259 --- gcc/ChangeLog | 6 ++++++ gcc/gimple-iterator.c | 3 ++- gcc/tree-phinodes.c | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 528ca321a56d..dfbbb24c3930 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-03-06 Alexandre Oliva + + PR debug/42897 + * gimple-iterator.c (gsi_remove): Propagate only PHI DEFs removed + permanently. + 2010-03-06 Alexandre Oliva PR debug/42897 diff --git a/gcc/gimple-iterator.c b/gcc/gimple-iterator.c index 9a3c382606eb..7d5d61009b92 100644 --- a/gcc/gimple-iterator.c +++ b/gcc/gimple-iterator.c @@ -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); diff --git a/gcc/tree-phinodes.c b/gcc/tree-phinodes.c index 6e63ed4f8f61..52aee785e806 100644 --- a/gcc/tree-phinodes.c +++ b/gcc/tree-phinodes.c @@ -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