From: Martin Jambor <mjambor@suse.cz>
To: GCC Patches <gcc-patches@gcc.gnu.org>
Cc: Jan Hubicka <jh@suse.cz>
Subject: Re: [PATCH 1/2] ipa-cp: Fix various issues in update_specialized_profile (PR 107925)
Date: Wed, 08 Mar 2023 11:32:31 +0100 [thread overview]
Message-ID: <ri6edpzleio.fsf@suse.cz> (raw)
In-Reply-To: <ri6o7pncc66.fsf@suse.cz>
Hello,
I'd like to ping the patch below.
Martin
On Tue, Feb 21 2023, Martin Jambor wrote:
> Hi,
>
> the patch below fixes various issues in function
> update_specialized_profile. The main is removal of the assert which
> is bogus in the case of recursive cloning. The division of
> unexplained counts is guesswork, which then leads to updates of counts
> of recursive edges, which then can be redirected to the new clone and
> their count subtracted from the count and there simply may not be
> enough left in the count of the original node - especially when we
> clone a lot because of using --param ipa-cp-eval-threshold=1.
>
> The other issue was omission to drop the count of the original node to
> ipa count. And when calculating the remainder, we should use
> lenient_count_portion_handling to account for partial train runs.
> Finally, the patch adds dumping of the original count which I think
> is useful.
>
> Profiled-LTO-bootstrapped on its own and also normally bootstrapped and
> tested together with the subsequent patch on an x86_64-linux. OK for
> master and the 12 branch - assuming it is also affected?
>
> Thanks,
>
> Martin
>
>
> gcc/ChangeLog:
>
> 2023-02-17 Martin Jambor <mjambor@suse.cz>
>
> PR ipa/107925
> * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
> ipa count, remove assert, lenient_count_portion_handling, dump
> also orig_node_count.
> ---
> gcc/ipa-cp.cc | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc
> index 4b8dedc0c51..5a6b41cf2d6 100644
> --- a/gcc/ipa-cp.cc
> +++ b/gcc/ipa-cp.cc
> @@ -5093,22 +5093,24 @@ update_specialized_profile (struct cgraph_node *new_node,
> profile_count redirected_sum)
> {
> struct cgraph_edge *cs;
> - profile_count new_node_count, orig_node_count = orig_node->count;
> + profile_count new_node_count, orig_node_count = orig_node->count.ipa ();
>
> if (dump_file)
> {
> fprintf (dump_file, " the sum of counts of redirected edges is ");
> redirected_sum.dump (dump_file);
> + fprintf (dump_file, "\n old ipa count of the original node is ");
> + orig_node_count.dump (dump_file);
> fprintf (dump_file, "\n");
> }
> if (!(orig_node_count > profile_count::zero ()))
> return;
>
> - gcc_assert (orig_node_count >= redirected_sum);
> -
> new_node_count = new_node->count;
> new_node->count += redirected_sum;
> - orig_node->count -= redirected_sum;
> + orig_node->count
> + = lenient_count_portion_handling (orig_node->count - redirected_sum,
> + orig_node);
>
> for (cs = new_node->callees; cs; cs = cs->next_callee)
> cs->count += cs->count.apply_scale (redirected_sum, new_node_count);
> --
> 2.39.1
next prev parent reply other threads:[~2023-03-08 10:32 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-21 14:42 Martin Jambor
2023-03-08 10:32 ` Martin Jambor [this message]
2023-03-10 17:23 ` Jan Hubicka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ri6edpzleio.fsf@suse.cz \
--to=mjambor@suse.cz \
--cc=gcc-patches@gcc.gnu.org \
--cc=jh@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).