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