[AArch64] Allow shrink-wrapping of non-leaf vector PCS functions
authorRichard Sandiford <richard.sandiford@arm.com>
Mon, 30 Sep 2019 16:47:21 +0000 (16:47 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Mon, 30 Sep 2019 16:47:21 +0000 (16:47 +0000)
commitce9d2a37f2db20328286f5d3d5a13a4e765c59f7
treee33d3b12ab823d3002276f63b725cc03e05af85e
parent6d1e98dfd2bfce30640d71df355bedf114229744
[AArch64] Allow shrink-wrapping of non-leaf vector PCS functions

With the function ABI stuff, we can now support shrink-wrapping of
non-leaf vector PCS functions.  This is particularly useful if the
vector PCS function calls an ordinary function on an error path,
since we can then keep the extra saves and restores specific to
that path too.

2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* config/aarch64/aarch64-protos.h (aarch64_use_simple_return_insn_p):
Delete.
* config/aarch64/aarch64.c (aarch64_components_for_bb): Check
whether the block calls a function that clobbers more registers
than the current function is allowed to.
(aarch64_use_simple_return_insn_p): Delete.
* config/aarch64/aarch64.md (simple_return): Remove condition.

gcc/testsuite/
* gcc.target/aarch64/torture/simd-abi-9.c: New test.

From-SVN: r276340
gcc/ChangeLog
gcc/config/aarch64/aarch64-protos.h
gcc/config/aarch64/aarch64.c
gcc/config/aarch64/aarch64.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/torture/simd-abi-9.c [new file with mode: 0644]