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

Andreas Schwab <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code

--- Comment #1 from Andreas Schwab <[email protected]> ---
3b9b8d6cfdf59337f4b7ce10ce92a98044b2657b is the first bad commit
commit 3b9b8d6cfdf59337f4b7ce10ce92a98044b2657b
Author: Surya Kumari Jangala <[email protected]>
Date:   Tue Jun 25 08:37:49 2024 -0500

    ira: Scale save/restore costs of callee save registers with block frequency

    In assign_hard_reg(), when computing the costs of the hard registers, the
    cost of saving/restoring a callee-save hard register in prolog/epilog is
    taken into consideration. However, this cost is not scaled with the entry
    block frequency. Without scaling, the cost of saving/restoring is quite
    small and this can result in a callee-save register being chosen by
    assign_hard_reg() even though there are free caller-save registers
    available. Assigning a callee save register to a pseudo that is live
    in the entire function and across a call will cause shrink wrap to fail.

    2024-06-25  Surya Kumari Jangala  <[email protected]>

    gcc/
            PR rtl-optimization/111673
            * ira-color.cc (assign_hard_reg): Scale save/restore costs of
            callee save registers with block frequency.

    gcc/testsuite/
            PR rtl-optimization/111673
            * gcc.target/powerpc/pr111673.c: New test.

 gcc/ira-color.cc                            |  4 +++-
 gcc/testsuite/gcc.target/powerpc/pr111673.c | 17 +++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/gcc.target/powerpc/pr111673.c

Reply via email to