From 35cd23ebb6d05e1325bd165679be44192f51ba05 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Fri, 17 Nov 2017 18:41:10 +0100 Subject: ipa-cp.c (update_profiling_info): Handle conversion to local profile. * ipa-cp.c (update_profiling_info): Handle conversion to local profile. * tree-cfg.c (execute_fixup_cfg): Do fixup same way as inliner does. From-SVN: r254885 --- gcc/ipa-cp.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'gcc/ipa-cp.c') diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index bc1e3ae..4421abf 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -3695,16 +3695,22 @@ update_profiling_info (struct cgraph_node *orig_node, } } - new_node->count = new_sum; - remainder = orig_node_count - new_sum; + if (!new_sum.nonzero_p ()) + { + new_sum = new_sum.global0 (); + new_node->count = new_sum; + remainder = orig_node->count; + } + else + { + remainder = orig_node_count - new_sum; + if (!remainder.nonzero_p ()) + remainder = orig_node_count.global0 (); + } orig_node->count = remainder; for (cs = new_node->callees; cs; cs = cs->next_callee) - /* FIXME: why we care about non-zero frequency here? */ - if (cs->frequency ()) - cs->count = cs->count.apply_scale (new_sum, orig_node_count); - else - cs->count = profile_count::zero (); + cs->count = cs->count.apply_scale (new_sum, orig_node_count); for (cs = orig_node->callees; cs; cs = cs->next_callee) cs->count = cs->count.apply_scale (remainder, orig_node_count); -- cgit v1.1