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

--- Comment #14 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Biener <rgue...@gcc.gnu.org>:

https://gcc.gnu.org/g:dc0dea98c96e02c6b24060170bc88da8d4931bc2

commit r15-5943-gdc0dea98c96e02c6b24060170bc88da8d4931bc2
Author: Richard Biener <rguent...@suse.de>
Date:   Wed Nov 27 13:36:19 2024 +0100

    middle-end/117801 - failed register coalescing due to GIMPLE schedule

    For a TSVC testcase we see failed register coalescing due to a
    different schedule of GIMPLE .FMA and stores fed by it.  This
    can be mitigated by making direct internal functions participate
    in TER - given we're using more and more of such functions to
    expose target capabilities it seems to be a natural thing to not
    exempt those.

    Unfortunately the internal function expanding API doesn't match
    what we usually have - passing in a target and returning an RTX
    but instead the LHS of the call is expanded and written to.  This
    makes the TER expansion of a call SSA def a bit unwieldly.

    Bootstrapped and tested on x86_64-unknown-linux-gnu.

    The ccmp changes have likely not seen any coverage, the debug stmt
    changes might not be optimal, we might end up losing on replaceable
    calls.

            PR middle-end/117801
            * tree-outof-ssa.cc (ssa_is_replaceable_p): Make
            direct internal function calls replaceable.
            * expr.cc (get_def_for_expr): Handle replacements with calls.
            (get_def_for_expr_class): Likewise.
            (optimize_bitfield_assignment_op): Likewise.
            (expand_expr_real_1): Likewise.  Properly expand direct
            internal function defs.
            * cfgexpand.cc (expand_call_stmt): Handle replacements with calls.
            (avoid_deep_ter_for_debug): Likewise, always create a debug temp
            for calls.
            (expand_debug_expr): Likewise, give up for calls.
            (expand_gimple_basic_block): Likewise.
            * ccmp.cc (ccmp_candidate_p): Likewise.
            (get_compare_parts): Likewise.

Reply via email to