https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122456

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|tree-optimization           |ipa

--- Comment #27 from Richard Biener <rguenth at gcc dot gnu.org> ---
So, we have

(gdb) up
#1  0x00000000010aa3f5 in cgraph_edge::resolve_speculation (
    edge=<cgraph_edge* 0x7ffff6571dd0 (<cgraph_node * 0x7ffff6526aa0
"wi_fold.constprop"/286> -> <cgraph_node * 0x0>)>, callee_decl=<function_decl
0x7ffff68fe700 __builtin_unreachable>)
    at ../../src/gcc/gcc/cgraph.cc:1532
1532               (symtab_node::get (callee_decl)))
(gdb) l
1527        e2 = edge;
1528      ref = e2->speculative_call_target_ref ();
1529      edge = edge->speculative_call_indirect_edge ();
1530      if (!callee_decl
1531          || !ref->referred->semantically_equivalent_p
1532               (symtab_node::get (callee_decl)))

and callee_decl is __builtin_unreachable which does not have a symtab node.

'edge' is

_ZNK20operator_bitwise_and7wi_foldER6irangeP9tree_nodeRK16generic_wide_intI16wide_int_storageES8_S8_S8_.constprop.0/490
-> (null) (speculative) (0 (adjusted),0.00 per call) 

so it seems we now speculate sth odd (possibly because profile data is "broken"
or misleads us).

Honza?  The above should give you enough to "guess" where the (now
multi-target?) speculative devirt could go wrong?

Reply via email to