aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2023-12-05 10:11:30 +0000
committerRichard Sandiford <richard.sandiford@arm.com>2023-12-05 10:11:30 +0000
commit0e7fee57c00ae17611651e0b057dc03b6e276b82 (patch)
tree916d58942dd9d5e925e1232d95a9545c0c431880 /libgcc
parent0e9aa05df6c643610a3821af52eda642a525a886 (diff)
downloadgcc-0e7fee57c00ae17611651e0b057dc03b6e276b82.zip
gcc-0e7fee57c00ae17611651e0b057dc03b6e276b82.tar.gz
gcc-0e7fee57c00ae17611651e0b057dc03b6e276b82.tar.bz2
aarch64: Update sibcall handling for SME
We only support tail calls between functions with the same PSTATE.ZA setting ("private-ZA" to "private-ZA" and "shared-ZA" to "shared-ZA"). Only a normal non-streaming function can tail-call another non-streaming function, and only a streaming function can tail-call another streaming function. Any function can tail-call a streaming-compatible function. gcc/ * config/aarch64/aarch64.cc (aarch64_function_ok_for_sibcall): Enforce PSTATE.SM and PSTATE.ZA restrictions. (aarch64_expand_epilogue): Save and restore the arguments to a sibcall around any change to PSTATE.SM. gcc/testsuite/ * gcc.target/aarch64/sme/sibcall_1.c: New test. * gcc.target/aarch64/sme/sibcall_2.c: Likewise. * gcc.target/aarch64/sme/sibcall_3.c: Likewise. * gcc.target/aarch64/sme/sibcall_4.c: Likewise. * gcc.target/aarch64/sme/sibcall_5.c: Likewise. * gcc.target/aarch64/sme/sibcall_6.c: Likewise. * gcc.target/aarch64/sme/sibcall_7.c: Likewise. * gcc.target/aarch64/sme/sibcall_8.c: Likewise.
Diffstat (limited to 'libgcc')
0 files changed, 0 insertions, 0 deletions