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

--- Comment #16 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jan Hubicka <hubi...@gcc.gnu.org>:

https://gcc.gnu.org/g:52d9c2272f6366cd5b30e9540ce8ef16b482cee5

commit r16-2196-g52d9c2272f6366cd5b30e9540ce8ef16b482cee5
Author: Jan Hubicka <hubi...@ucw.cz>
Date:   Fri Jul 11 12:37:24 2025 +0200

    Fix ICE in speculative devirtualization

    This patch fixes ICE bilding lto1 with autoprofiledbootstrap and in
pr114790.
    What happens is that auto-fdo speculatively devirtualizes to a wrong
target.
    This is due to a bug where it mixes up dwarf names and linkage names of
inline
    functions I need to fix as well.

    Later we clone at WPA time. At ltrans time clone is materialized and call
is
    turned into a direct call (this optimization is missed by ipa-cp
propagation).
    At this time we should resolve speculation but we don't.  As a result we
get
    error from verifier after inlining complaining that there is speculative
call
    with corresponding direct call lacking speculative flag.

    This seems long-lasting problem in cgraph_update_edges_for_call_stmt_node
but
    I suppose it does not trigger since we usually speculate correctly or
notice
    the direct call at WPA time already.

    Bootstrapped/regtested x86_64-linux.

    gcc/ChangeLog:

            PR ipa/114790
            * cgraph.cc (cgraph_update_edges_for_call_stmt_node): Resolve
devirtualization
            if call statement was optimized out or turned to direct call.

    gcc/testsuite/ChangeLog:

            * g++.dg/lto/pr114790_0.C: New test.
            * g++.dg/lto/pr114790_1.C: New test.

Reply via email to