Hello,

On Mon, Mar 03 2025, Martin Jambor wrote:
> Hi,
>
> PR 118318 reported an ICE during PGO build of Firefox when IPA-CP, in
> the final stages of update_counts_for_self_gen_clones where it
> attempts to guess how to distribute profile count among clones created
> for recursive edges and the various edges that are created in the
> process.  If one such edge has profile count of kind GUESSED_GLOBAL0,
> the compatibility check in the operator+ will lead to an ICE.  After
> discussing the situation with Honza, we concluded that there is little
> more we can do other than check for this situation before touching the
> edge count, so this is what this patch does.
>
> Bootstrapped and LTO-profile-bootstrapped and tested on x86_64.  OK for
> master?  (Should I then backport this to active release branches?  I
> guess it would make sense.)
>
> Thanks,
>
> Martin
>
>
> gcc/ChangeLog:
>
> 2025-02-28  Martin Jambor  <mjam...@suse.cz>
>
>       PR ipa/118318
>       * ipa-cp.cc (adjust_clone_incoming_counts): Add a compatible_p check.

Honza approved the patch yesterday in person so I have committed it to
master.  I will backport it to the active release branches in a couple
of weeks.

Thanks,

Martin


> ---
>  gcc/ipa-cp.cc | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc
> index 68959f2677b..a63463c2906 100644
> --- a/gcc/ipa-cp.cc
> +++ b/gcc/ipa-cp.cc
> @@ -4599,7 +4599,8 @@ adjust_clone_incoming_counts (cgraph_node *node,
>       cs->count = cs->count.combine_with_ipa_count (sum);
>        }
>      else if (!desc->processed_edges->contains (cs)
> -          && cs->caller->clone_of == desc->orig)
> +          && cs->caller->clone_of == desc->orig
> +          && cs->count.compatible_p (desc->count))
>        {
>       cs->count += desc->count;
>       if (dump_file)
> -- 
> 2.47.1

Reply via email to