]> git.ipfire.org Git - thirdparty/gcc.git/commit
[PR rtl-optimization/119099] Avoid infinite loop in ext-dce.
authorAlexey Merzlyakov <alexey.merzlyakov@samsung.com>
Thu, 6 Mar 2025 21:42:59 +0000 (14:42 -0700)
committerJeff Law <jlaw@ventanamicro.com>
Thu, 6 Mar 2025 21:45:17 +0000 (14:45 -0700)
commitaef04968cfba0feb4420d96c61f766ee6c73f957
treef17e853a87bdb8b305e250008d8acb379e87bb6a
parentac8a70db59ac309daf866a65b5785e472e76d406
[PR rtl-optimization/119099] Avoid infinite loop in ext-dce.

This fixes the ping-ponging of live sets in ext-dce which is left
unresolved can lead to infinite loops in the ext-dce pass as seen by the
P1 regression 119099.

At its core instead of replacing the livein set with the just recomputed
data, we IOR in the just recomputed data to the existing livein set.
That ensures the  existing livein set never shrinks.

Bootstrapped and regression tested on x86.  I've also thrown this into
my tester to verify it across multiple targets and that we aren't
regressing the (limited) tests we have in place for ext-dce's
optimization behavior.

While it's a generic patch, I'll wait for the RISC-V tester to run is
course before committing.

PR rtl-optimization/119099
gcc/
* ext-dce.cc (ext_dce_rd_transfer_n): Do not allow the livein
set to shrink.

gcc/testsuite/
* gcc.dg/torture/pr119099.c: New test.

Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
gcc/ext-dce.cc
gcc/testsuite/gcc.dg/torture/pr119099.c [new file with mode: 0644]