https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107704
Bug ID: 107704 Summary: [13 Regression] Testsuite regression after recent DCE changes Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: law at gcc dot gnu.org Target Milestone: --- This change: commit be2c74fdcd0e8d66c3667008ba2561ab5dcc379b Author: Richard Biener <rguent...@suse.de> Date: Thu Nov 10 15:04:10 2022 +0100 Make last DCE remove empty loops The following makes the last DCE pass CD-DCE and in turn the last CD-DCE pass a DCE one. That ensues we remove empty loops that become empty between the two. I've also moved the tail-call pass after DCE since DCE can only improve things here. The two testcases were the only ones scanning cddce3 so I've changed them to scan the dce7 pass that's now in this place. The testcases scanning dce7 also work when that's in the earlier position. PR tree-optimization/84646 * tree-ssa-dce.cc (pass_dce::set_pass_param): Add param wheter to run update-address-taken. (pass_dce::execute): Honor it. * passes.def: Exchange last DCE and CD-DCE invocations. Swap pass_tail_calls and the last DCE. * g++.dg/tree-ssa/pr106922.C: Continue to scan earlier DCE dump. * gcc.dg/tree-ssa/20030808-1.c: Likewise. Is causing minor regressions on the sh targets. On sh3-linux-gnu for example: Tests that now fail, but worked before (1 tests): gcc.target/sh/pr51244-19.c scan-assembler-not movt AFAICT this looks like a target issue -- the RTL looks suitable for avoiding the movt, but it doesn't happen for some reason. I didn't consider it important enough to chase down further given the other things on my plate.