]> git.ipfire.org Git - thirdparty/gcc.git/commit
ira: Scale save/restore costs of callee save registers with block frequency
authorSurya Kumari Jangala <jskumari@linux.ibm.com>
Tue, 25 Jun 2024 13:37:49 +0000 (08:37 -0500)
committerSurya Kumari Jangala <jskumari@linux.ibm.com>
Tue, 25 Jun 2024 17:48:49 +0000 (12:48 -0500)
commit3b9b8d6cfdf59337f4b7ce10ce92a98044b2657b
treedf1cf06584a604cbc78149d961654ed11d532575
parent9f168b412f44781013401492acfedf22afe7741b
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  <jskumari@linux.ibm.com>

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
gcc/testsuite/gcc.target/powerpc/pr111673.c [new file with mode: 0644]