aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2024-02-21 11:12:28 +0000
committerRichard Sandiford <richard.sandiford@arm.com>2024-02-21 11:12:28 +0000
commit6d56f590483b17c538e332097807a6c5a9225ea3 (patch)
tree6d493b28a871842e2769106da45718980bffe875 /libgcc
parent22f0cf36ec0ad4ec76b50cd87eaab925bda74df8 (diff)
downloadgcc-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