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

--- Comment #7 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Vladimir Makarov <vmaka...@gcc.gnu.org>:

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

commit r15-7932-ge355fe414aa3aaf215c7dd9dd789ce217a1b458c
Author: Vladimir N. Makarov <vmaka...@redhat.com>
Date:   Mon Mar 10 16:26:59 2025 -0400

    [PR114991][IRA]: Improve reg equiv invariant calculation

    In PR test case IRA preferred to allocate hard reg to a pseudo instead
    of its equivalence.  This resulted in allocating caller-saved hard reg
    and generating save/restore insns in the function prologue/epilogue.
    The equivalence is an invariant (stack pointer plus offset) and the
    pseudo is used mostly as memory address.  This happened as there was
    no simplification of insn after the invariant substitution.  The patch
    adds the necessary code.

    gcc/ChangeLog:

            PR target/114991
            * ira-costs.cc (equiv_can_be_consumed_p): Add new argument
invariant_p.
            Add code for dealing with the invariant.
            (calculate_equiv_gains): Don't consider init insns.  Pass the new
            argument to equiv_can_be_consumed_p.  Don't treat invariant as
            memory.

    gcc/testsuite/ChangeLog:

            PR target/114991
            * gcc.target/aarch64/pr114991.c: New test.

Reply via email to