aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2010-03-06 20:30:10 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2010-03-06 20:30:10 +0000
commitcd6549e843ab1b0b32621e2d6471e183d6600f0f (patch)
tree7aff0bd82f942c85e0e626a413ea79809f0f95e5 /gcc
parentaba09491c27cb6e9a908ebc2fde41a41a1f0ee5b (diff)
downloadgcc-cd6549e843ab1b0b32621e2d6471e183d6600f0f.zip
gcc-cd6549e843ab1b0b32621e2d6471e183d6600f0f.tar.gz
gcc-cd6549e843ab1b0b32621e2d6471e183d6600f0f.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/gimple-iterator.c3
-rw-r--r--gcc/tree-phinodes.c4
3 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 528ca32..dfbbb24 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/gimple-iterator.c b/gcc/gimple-iterator.c
index 9a3c382..7d5d610 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 6e63ed4..52aee78 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