]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-optimization/119389 - limit edge processing in dominated_by_p_w_unex
authorRichard Biener <rguenther@suse.de>
Thu, 20 Mar 2025 14:08:33 +0000 (15:08 +0100)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 20 Mar 2025 18:08:02 +0000 (19:08 +0100)
The following removes quadraticness when visiting each predecessor
of a large CFG merge with dominated_by_p_w_unex.

PR tree-optimization/119389
* tree-ssa-sccvn.cc (dominated_by_p_w_unex): Limit the number
of predecessors of a CFG merge we try to skip.

gcc/tree-ssa-sccvn.cc

index 40c38fa020a6353ee14d4c7a04a2c9458f6f48a6..481ab8b243d74733529a397c2a390a9709b9f2af 100644 (file)
@@ -5172,7 +5172,11 @@ dominated_by_p_w_unex (basic_block bb1, basic_block bb2, bool allow_back)
   /* Iterate to the single successor of bb2 with only a single executable
      incoming edge.  */
   else if (EDGE_COUNT (bb2->succs) == 1
-          && EDGE_COUNT (single_succ (bb2)->preds) > 1)
+          && EDGE_COUNT (single_succ (bb2)->preds) > 1
+          /* Limit the number of edges we check, we should bring in
+             context from the iteration and compute the single
+             executable incoming edge when visiting a block.  */
+          && EDGE_COUNT (single_succ (bb2)->preds) < 8)
     {
       edge prede = NULL;
       FOR_EACH_EDGE (e, ei, single_succ (bb2)->preds)