aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2025-04-29 22:43:45 +0200
committerJan Hubicka <hubicka@ucw.cz>2025-04-29 22:43:45 +0200
commit1efd525e828d5c30d0962d05ba81f9d7c8176ca7 (patch)
tree3e9819d93ad8c5fbd88213d75cc62ecde74c8a12
parent405fee9e1faf20f05b62e810ec1d6528100de067 (diff)
downloadgcc-1efd525e828d5c30d0962d05ba81f9d7c8176ca7.zip
gcc-1efd525e828d5c30d0962d05ba81f9d7c8176ca7.tar.gz
gcc-1efd525e828d5c30d0962d05ba81f9d7c8176ca7.tar.bz2
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.
-rw-r--r--gcc/ipa-cp.cc10
1 files changed, 4 insertions, 6 deletions
diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc
index b4b9699..f7e5aa9 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;
}