https://gcc.gnu.org/g:d0f760ff309ab3a4a8cbe71b9971d08429ff2596
commit r17-5532-gd0f760ff309ab3a4a8cbe71b9971d08429ff2596 Author: Richard Biener <[email protected]> Date: Fri Oct 23 16:47:49 2026 +0200 tree-optimization/128082 - simple latches for FRE With FRE we generally want less latch edges because those eventually trigger iteration separately, so use LOOPS_HAVE_SIMPLE_LATCHES instead. PR tree-optimization/128082 * tree-ssa-sccvn.cc (pass_fre::execute): Use LOOPS_NORMAL to force simple latches. * gcc.dg/tree-ssa/ssa-fre-67.c: Adjust. Diff: --- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-67.c | 2 +- gcc/tree-ssa-sccvn.cc | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-67.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-67.c index fab1e599b811..09ca67a14634 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-67.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-67.c @@ -12,5 +12,5 @@ int foo() return i; } -/* { dg-final { scan-tree-dump "RPO iteration over 3 blocks visited 3 blocks" "fre1" } } */ +/* { dg-final { scan-tree-dump "RPO iteration over 4 blocks visited 3 blocks" "fre1" } } */ /* { dg-final { scan-tree-dump "return 1;" "fre1" } } */ diff --git a/gcc/tree-ssa-sccvn.cc b/gcc/tree-ssa-sccvn.cc index 6d7f0076266b..e76b608d9d7c 100644 --- a/gcc/tree-ssa-sccvn.cc +++ b/gcc/tree-ssa-sccvn.cc @@ -9430,7 +9430,8 @@ pass_fre::execute (function *fun) bool iterate_p = may_iterate && (optimize > 1); calculate_dominance_info (CDI_DOMINATORS); if (iterate_p) - loop_optimizer_init (AVOID_CFG_MODIFICATIONS); + /* When iterating make sure to minimize the number of backedges. */ + loop_optimizer_init (LOOPS_HAVE_SIMPLE_LATCHES); { /* When iterating, finalize below does the elimination; otherwise the
