https://gcc.gnu.org/g:659e222b82c41ae0730a0bb93d891864b6ae5e16

commit r13-9497-g659e222b82c41ae0730a0bb93d891864b6ae5e16
Author: Martin Jambor <mjam...@suse.cz>
Date:   Fri Mar 7 17:17:24 2025 +0100

    ipa-cp: Avoid ICE when redistributing nodes among edges to recursive clones 
(PR 118318)
    
    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  <mjam...@suse.cz>
    
            PR ipa/118318
            * ipa-cp.cc (adjust_clone_incoming_counts): Add a compatible_p 
check.
    
    (cherry picked from commit 7deb498425799aceb7659ea25614175a49533184)

Diff:
---
 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 8f36608cf33b..08fca00e5f65 100644
--- a/gcc/ipa-cp.cc
+++ b/gcc/ipa-cp.cc
@@ -4808,7 +4808,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)

Reply via email to