Hi,
this patch fixes another issue found by Martin Liska's patch to trap in unlikely
section (last one which I need to bootstrap).
Here we confused local and global counts, which was misupdate at a time I
introudced them. Bootstrapped/regtested x86_64-linux.
Honza
* ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
with zero counts.
Index: ipa-profile.c
===================================================================
--- ipa-profile.c (revision 257011)
+++ ipa-profile.c (working copy)
@@ -331,16 +331,14 @@ ipa_propagate_frequency_1 (struct cgraph
it is executed by the train run. Transfer the function only if all
callers are unlikely executed. */
if (profile_info
- && edge->callee->count.initialized_p ()
- /* Thunks are not profiled. This is more or less implementation
- bug. */
- && !d->function_symbol->thunk.thunk_p
+ && !(edge->callee->count.ipa () == profile_count::zero ())
&& (edge->caller->frequency != NODE_FREQUENCY_UNLIKELY_EXECUTED
|| (edge->caller->global.inlined_to
&& edge->caller->global.inlined_to->frequency
!= NODE_FREQUENCY_UNLIKELY_EXECUTED)))
d->maybe_unlikely_executed = false;
- if (edge->count.initialized_p () && !edge->count.nonzero_p ())
+ if (edge->count.ipa ().initialized_p ()
+ && !edge->count.ipa ().nonzero_p ())
continue;
switch (edge->caller->frequency)
{