https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118801
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
With the following we're down to 215 DEBUG BEGIN_STMT in the testcase
diff --git a/gcc/tree-ssa-dce.cc b/gcc/tree-ssa-dce.cc
index be21a2d0b50..064e47cbf23 100644
--- a/gcc/tree-ssa-dce.cc
+++ b/gcc/tree-ssa-dce.cc
@@ -1508,6 +1508,7 @@ eliminate_unnecessary_stmts (bool aggressive)
/* Remove dead statements. */
auto_bitmap debug_seen;
+ bool debug_begin_seen = false;
for (gsi = gsi_last_bb (bb); !gsi_end_p (gsi); gsi = psi)
{
stmt = gsi_stmt (gsi);
@@ -1670,6 +1671,16 @@ eliminate_unnecessary_stmts (bool aggressive)
remove_dead_stmt (&gsi, bb, to_remove_edges);
continue;
}
+ else if (gimple_debug_begin_stmt_p (stmt))
+ {
+ /* We are only keeping the last debug-begin in a series of
+ debug-begin stmts. */
+ if (debug_begin_seen)
+ remove_dead_stmt (&gsi, bb, to_remove_edges);
+ debug_begin_seen = true;
+ continue;
+ }
+ debug_begin_seen = false;
bitmap_clear (debug_seen);
}