https://gcc.gnu.org/g:1efd525e828d5c30d0962d05ba81f9d7c8176ca7

commit r16-291-g1efd525e828d5c30d0962d05ba81f9d7c8176ca7
Author: Jan Hubicka <hubi...@ucw.cz>
Date:   Tue Apr 29 22:43:45 2025 +0200

    Fix cs_interesting_for_ipcp_p wrt flag_profile_partial_training.
    
    As noticed by Martin Jambor, I introduced a bug while simplifying
    cs_interesting_for_ipcp_p and reversed condition for
    flag_profile_partial_training.  Also I noticed that we probably want to
    consider calls with unintialized counts for cloning so the pass does 
somehting
    with -fno-guess-branch-probability even thugh this is probably not very 
useful
    in practice.
    
    gcc/ChangeLog:
    
            * ipa-cp.cc (cs_interesting_for_ipcp_p): Fix handling of 
uninitialized
            counts and 0 IPA cost wrt flag_profile_partial_training.

Diff:
---
 gcc/ipa-cp.cc | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc
index b4b96997d750..f7e5aa9bfd5c 100644
--- a/gcc/ipa-cp.cc
+++ b/gcc/ipa-cp.cc
@@ -545,14 +545,12 @@ cs_interesting_for_ipcp_p (cgraph_edge *e)
     return true;
   /* If local (possibly guseed or adjusted 0 profile) claims edge is
      not executed, do not propagate.  */
-  if (!e->count.nonzero_p ())
+  if (e->count.initialized_p () && !e->count.nonzero_p ())
     return false;
-  /* If IPA profile says edge is executed zero times, but zero
-     is quality is ADJUSTED, still consider it for cloning in
-     case we have partial training.  */
+  /* If we have zero IPA profile, still consider edge for cloning
+     in case we do partial training.  */
   if (e->count.ipa ().initialized_p ()
-      && opt_for_fn (e->callee->decl,flag_profile_partial_training)
-      && e->count.nonzero_p ())
+      && !opt_for_fn (e->callee->decl,flag_profile_partial_training))
     return false;
   return true;
 }

Reply via email to