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

--- Comment #2 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:57dbbdd8e34b80926e06b352b6c442c555b303ed

commit r15-8041-g57dbbdd8e34b80926e06b352b6c442c555b303ed
Author: Jan Hubicka <hubi...@ucw.cz>
Date:   Thu Mar 13 20:11:02 2025 +0100

    Fix speculation_useful_p

    This patch fixes issue with speculation and x264.  With profile feedback
    we first introduce speculative calls to mc_chroma which is called
indirectly.
    Then we propagate constants acorss these calls (which is useful transform)
but
    then speculation_useful_p decides that these speculations are not useful
and
    we end up calling unspecialized version.

    This patch updates speculation_useful_p to consider edges redirected
earlier
    to clones as useful, since we can expect that ipa-cp knows what it is doing
    (originally it only looked for inlined calls).  I also noticed that we want
    to keep edges even if they are not hot.

    Finally I noticed a typo in computing target in code which intends to keep
    devirtualized calls to functions where we propagated pureness/constness.
Newly
    we also track ipa-modref summaries as they also may be useful.

    gcc/ChangeLog:

            PR ipa/119147
            * ipa-inline.cc: Include ipa-modref-tree.h and
            ipa-modref.h.
            (speculation_useful_p): If target is a clone, speculation is usef;
            fix mixup of caller and callee; speculate also calls not considered
            hot; consider modref summary also possibly useful for optimization.
            * ipa-profile.cc (ipa_profile): Keep non-hot speculations.

Reply via email to