summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2018-01-24 16:18:18 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2018-01-24 16:18:18 +0000
commit516473e8c79826fa7854d06f72330947027180cb (patch)
tree4c2cdd81abb1e79324639c88fa340e63a6bb1a3c
parent938e5d00ed4624db32ec25fa75be10b2ba04a79d (diff)
downloadgcc-516473e8c79826fa7854d06f72330947027180cb.tar.gz
* ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
with zero counts. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257020 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ipa-profile.c8
2 files changed, 8 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5920d361f92..1b64db3eb37 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2018-01-24 Jan Hubicka <hubicka@ucw.cz>
+
+ * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
+ with zero counts.
+
2018-01-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
diff --git a/gcc/ipa-profile.c b/gcc/ipa-profile.c
index 0c972ddb80c..1ab838aca2a 100644
--- a/gcc/ipa-profile.c
+++ b/gcc/ipa-profile.c
@@ -331,16 +331,14 @@ ipa_propagate_frequency_1 (struct cgraph_node *node, void *data)
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)
{