aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-dce.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-05-02 11:17:00 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-05-02 11:17:00 +0000
commitc27998546ac2291ceffbf1f998f6e46e6b8ad6eb (patch)
treec0a3ee9df92f78e5eb6d651ce6ba2fc506ce38d4 /gcc/tree-ssa-dce.c
parent9feeafd7f95ea9f7211908c137c60074b3a52da2 (diff)
downloadgcc-c27998546ac2291ceffbf1f998f6e46e6b8ad6eb.zip
gcc-c27998546ac2291ceffbf1f998f6e46e6b8ad6eb.tar.gz
gcc-c27998546ac2291ceffbf1f998f6e46e6b8ad6eb.tar.bz2
re PR tree-optimization/90273 (GCC runs out of memory building Firefox)
2019-05-02 Richard Biener <rguenther@suse.de> PR tree-optimization/90273 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Eliminate useless debug stmts. From-SVN: r270791
Diffstat (limited to 'gcc/tree-ssa-dce.c')
-rw-r--r--gcc/tree-ssa-dce.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c
index c0e1227..4853f0bd 100644
--- a/gcc/tree-ssa-dce.c
+++ b/gcc/tree-ssa-dce.c
@@ -1237,6 +1237,7 @@ eliminate_unnecessary_stmts (void)
bb = h.pop ();
/* Remove dead statements. */
+ auto_bitmap debug_seen;
for (gsi = gsi_last_bb (bb); !gsi_end_p (gsi); gsi = psi)
{
stmt = gsi_stmt (gsi);
@@ -1282,11 +1283,15 @@ eliminate_unnecessary_stmts (void)
}
}
if (!dead)
- continue;
+ {
+ bitmap_clear (debug_seen);
+ continue;
+ }
}
if (!is_gimple_debug (stmt))
something_changed = true;
remove_dead_stmt (&gsi, bb, to_remove_edges);
+ continue;
}
else if (is_gimple_call (stmt))
{
@@ -1352,6 +1357,18 @@ eliminate_unnecessary_stmts (void)
break;
}
}
+ else if (gimple_debug_bind_p (stmt))
+ {
+ /* We are only keeping the last debug-bind of a
+ non-DEBUG_EXPR_DECL variable in a series of
+ debug-bind stmts. */
+ tree var = gimple_debug_bind_get_var (stmt);
+ if (TREE_CODE (var) != DEBUG_EXPR_DECL
+ && !bitmap_set_bit (debug_seen, DECL_UID (var)))
+ remove_dead_stmt (&gsi, bb, to_remove_edges);
+ continue;
+ }
+ bitmap_clear (debug_seen);
}
/* Remove dead PHI nodes. */