diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2025-04-29 22:43:45 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@ucw.cz> | 2025-04-29 22:43:45 +0200 |
commit | 1efd525e828d5c30d0962d05ba81f9d7c8176ca7 (patch) | |
tree | 3e9819d93ad8c5fbd88213d75cc62ecde74c8a12 | |
parent | 405fee9e1faf20f05b62e810ec1d6528100de067 (diff) | |
download | gcc-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.cc | 10 |
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; } |