https://gcc.gnu.org/g:fd498ee0909d494f19fbb5803942ca423f2cc763

commit r16-5358-gfd498ee0909d494f19fbb5803942ca423f2cc763
Author: Andrew Pinski <[email protected]>
Date:   Sat Nov 15 14:44:21 2025 -0800

    mergephi: Add stats
    
    This just adds a simple stats recording. Main reason is that I want to find
    out if we can remove one of the mergephi now.
    
    Bootstrapped and tested on x86_64-linux-gnu.
    
    gcc/ChangeLog:
    
            * tree-cfgcleanup.cc (pass_merge_phi::execute): Add stats for the 
removed
            blocks.
    
    Signed-off-by: Andrew Pinski <[email protected]>

Diff:
---
 gcc/tree-cfgcleanup.cc | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/gcc/tree-cfgcleanup.cc b/gcc/tree-cfgcleanup.cc
index a78b711d82c3..9aeb4f3fc99e 100644
--- a/gcc/tree-cfgcleanup.cc
+++ b/gcc/tree-cfgcleanup.cc
@@ -1372,10 +1372,10 @@ public:
 unsigned int
 pass_merge_phi::execute (function *fun)
 {
+  int forwarder_removed = 0;
   calculate_dominance_info (CDI_DOMINATORS);
 
   /* Find all PHI nodes that we may be able to merge.  */
-  bool changed = false;
   unsigned n = last_basic_block_for_fn (fun);
   for (unsigned i = NUM_FIXED_BLOCKS; i < n; i++)
     {
@@ -1386,15 +1386,17 @@ pass_merge_phi::execute (function *fun)
       /* Look for a forwarder block with PHI nodes.  */
       if (tree_forwarder_block_p (bb)
          && remove_forwarder_block (bb, true))
-       changed = true;
+       forwarder_removed++;
     }
 
   /* Removing forwarder blocks can cause formerly irreducible loops
      to become reducible if we merged two entry blocks.  */
-  if (changed
+  if (forwarder_removed != 0
       && current_loops)
     loops_state_set (LOOPS_NEED_FIXUP);
 
+  statistics_counter_event (fun, "Forwarder blocks removed",
+                           forwarder_removed);
   return 0;
 }

Reply via email to