Set TARGET_OMIT_STRUCT_RETURN_REG to true
authorRamana Radhakrishnan <ramana.radhakrishnan@arm.com>
Fri, 13 May 2016 09:23:28 +0000 (09:23 +0000)
committerRamana Radhakrishnan <ramana@gcc.gnu.org>
Fri, 13 May 2016 09:23:28 +0000 (09:23 +0000)
commit43203dea1afa87140a0f045f2c2182943247065f
treeec00ce3d8d49a2c80e8e91fcf56ef29defe59ba8
parent44cb09ea6b2164e8392e3001b0ba5b93093bfa07
Set TARGET_OMIT_STRUCT_RETURN_REG to true

The reason this caught my eye on aarch64 is because
the return value register (x0) is not identical to the register in which
the hidden parameter for AArch64 is set (x8). Thus setting this to true
seems to be quite reasonable and shaves off 100 odd mov x0, x8's from
cc1 in a bootstrap build.

I don't expect this to make a huge impact on performance but as they
say every little counts.  The AAPCS64 is quite explicit about not
requiring that the contents of x8 be kept live.

Bootstrapped and regression tested on aarch64.

Ok to apply ?

Ramana

gcc/
* config/aarch64/aarch64.c (TARGET_OMIT_STRUCT_RETURN_REG): Set to
true.

gcc/testsuite

* gcc.target/aarch64/struct_return.c: New test.

From-SVN: r236197
gcc/ChangeLog
gcc/config/aarch64/aarch64.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/struct_return.c [new file with mode: 0644]