On Sun, Nov 16, 2025 at 6:24 AM Andrew Pinski <[email protected]> wrote: > > 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.
OK. > gcc/ChangeLog: > > * tree-cfgcleanup.cc (pass_merge_phi::execute): Add stats for the > removed > blocks. > > Signed-off-by: Andrew Pinski <[email protected]> > --- > 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 ac1394ac1d4..9397031b225 100644 > --- a/gcc/tree-cfgcleanup.cc > +++ b/gcc/tree-cfgcleanup.cc > @@ -1369,10 +1369,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++) > { > @@ -1383,15 +1383,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; > } > > -- > 2.43.0 >
