https://gcc.gnu.org/g:3dfd545671f0b3ffb2bd5166637381665fea7ebb

commit r16-6154-g3dfd545671f0b3ffb2bd5166637381665fea7ebb
Author: Richard Biener <[email protected]>
Date:   Mon Dec 8 10:25:21 2025 +0100

    ipa/122456 - fix ICE during LTO profiledbootstrap
    
    When we have a speculated edge but we folded the call to
    __builtin_unreachable () then trying to update the cgraph ICEs
    in resolve_speculation because there's no symtab node for
    __builtin_unreachable (). Reject this resolving attempt similar
    as to when the callees decl were NULL or it were not semantically
    equivalent.
    
    I only have a LTRANS unit as testcase.
    
            PR ipa/122456
            * cgraph.cc (cgraph_edge::resolve_speculation): Handle
            a NULL symtab_node::get (callee_decl).

Diff:
---
 gcc/cgraph.cc | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gcc/cgraph.cc b/gcc/cgraph.cc
index abea2e2d2ae9..9e273642dab9 100644
--- a/gcc/cgraph.cc
+++ b/gcc/cgraph.cc
@@ -1515,9 +1515,10 @@ cgraph_edge::resolve_speculation (cgraph_edge *edge, 
tree callee_decl)
     e2 = edge;
   ref = e2->speculative_call_target_ref ();
   edge = edge->speculative_call_indirect_edge ();
+  symtab_node *callee;
   if (!callee_decl
-      || !ref->referred->semantically_equivalent_p
-          (symtab_node::get (callee_decl)))
+      || !(callee = symtab_node::get (callee_decl))
+      || !ref->referred->semantically_equivalent_p (callee))
     {
       if (dump_file)
        {

Reply via email to