With FRE we generally want less latch edges because those eventually
trigger iteration separately, so use LOOPS_HAVE_SIMPLE_LATCHES instead.

Bootstrap and regtest running on x86_64-unknown-linux-gnu.

        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.
---
 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 fab1e599b81..09ca67a1463 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 8ce19cf95bc..1f8449abc6b 100644
--- a/gcc/tree-ssa-sccvn.cc
+++ b/gcc/tree-ssa-sccvn.cc
@@ -9419,7 +9419,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

base-commit: 354649551eef48f58ceb00633d56daee23139413
prerequisite-patch-id: e52d299db98b0892f974152cd9fa5f6859fec5b7
prerequisite-patch-id: 39da6ec3264bae454fa504f127cd5b80a0662f04
prerequisite-patch-id: 6d6c263a964425334ad8c2edd4dd89dcbff44bfe
prerequisite-patch-id: 9a12a1706cbdff1edf8959682cd3cf9d900cd8f1
prerequisite-patch-id: b24057443c46d6979436cce479836178b19355de
prerequisite-patch-id: d61bf2c4249ecd3d9da5eeda002d332ed3a8b4fd
prerequisite-patch-id: 59cbeca60f782f48f945bc532c2235a50de6f0e5
prerequisite-patch-id: 8eddd3172e2007d0fc591124a56b372dfe83e683
prerequisite-patch-id: 862842dd3742066d039f66ffe9528bc490308c50
prerequisite-patch-id: e413d39d9af45f25483eaf229cf883c771444fbb
prerequisite-patch-id: 2faef186ad1d816bb104d89638bc4cec6d863a46
prerequisite-patch-id: b32cceb111f4f57798e4b1d58822281e7bbaf25e
prerequisite-patch-id: 404fd84b023dbe3994be05f26d6a86e83486d405
prerequisite-patch-id: 08ff1c06921c5e253d911128be3a8ebb76137d3c
-- 
2.51.0

Reply via email to