tree-optimization/106722 - fix CD-DCE edge marking
authorRichard Biener <rguenther@suse.de>
Fri, 10 Feb 2023 09:28:29 +0000 (10:28 +0100)
committerRichard Biener <rguenther@suse.de>
Mon, 13 Feb 2023 07:26:36 +0000 (08:26 +0100)
commit338739645b8e5bf34636d8d4829d7650001ad08c
tree8b842ee7e209b12dd3590e13712fdd0aae6d0a8c
parent89367e794613bdeb21df3e6fc0215f0acd553ef8
tree-optimization/106722 - fix CD-DCE edge marking

The following fixes a latent issue when we mark control edges but
end up with marking a block with no stmts necessary.  In this case
we fail to mark dependent control edges of that block.

PR tree-optimization/106722
* tree-ssa-dce.cc (mark_last_stmt_necessary): Return
whether we marked a stmt.
(mark_control_dependent_edges_necessary): When
mark_last_stmt_necessary didn't mark any stmt make sure
to mark its control dependent edges.
(propagate_necessity): Likewise.

* gcc.dg/torture/pr108737.c: New testcase.
gcc/testsuite/gcc.dg/torture/pr108737.c [new file with mode: 0644]
gcc/tree-ssa-dce.cc