diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2024-02-21 11:12:28 +0000 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2024-02-21 11:12:28 +0000 |
commit | 6d56f590483b17c538e332097807a6c5a9225ea3 (patch) | |
tree | 6d493b28a871842e2769106da45718980bffe875 /libgcc | |
parent | 22f0cf36ec0ad4ec76b50cd87eaab925bda74df8 (diff) | |
download | gcc-6d56f590483b17c538e332097807a6c5a9225ea3.zip gcc-6d56f590483b17c538e332097807a6c5a9225ea3.tar.gz gcc-6d56f590483b17c538e332097807a6c5a9225ea3.tar.bz2 |
aarch64: Fix sibcalls involving shared-ZT0 functions
In:
void bar() __arm_inout("za");
void foo() __arm_inout("za", "zt0") { bar(); }
foo cannot tail-call bar because foo needs to restore ZT0 after
the call. I'd forgotten to update the ok_for_sibcall rules
to handle this when adding SME2.
Thanks to Sander de Smalen for the spot.
gcc/
* config/aarch64/aarch64.cc (aarch64_function_ok_for_sibcall):
Check that each individual piece of state is shared in the same
way, rather than using an aggregate check for PSTATE.ZA.
gcc/testsuite/
* gcc.target/aarch64/sme/sibcall_9.c: New test.
Diffstat (limited to 'libgcc')
0 files changed, 0 insertions, 0 deletions