]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ipa-cp: Avoid ICE when redistributing nodes among edges to recursive clones (PR 118318)
authorMartin Jambor <mjambor@suse.cz>
Fri, 7 Mar 2025 16:17:24 +0000 (17:17 +0100)
committerMartin Jambor <jamborm@gcc.gnu.org>
Fri, 7 Mar 2025 16:25:07 +0000 (17:25 +0100)
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.

gcc/ChangeLog:

2025-02-28  Martin Jambor  <mjambor@suse.cz>

PR ipa/118318
* ipa-cp.cc (adjust_clone_incoming_counts): Add a compatible_p check.

gcc/ipa-cp.cc

index 3c994f24f540930c0193d5b7618f510519ea6dfd..264568989a9606fb2670992d8f47786bd4c95496 100644 (file)
@@ -4638,7 +4638,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)