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 <[email protected]>
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.