aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2022-03-29 16:07:09 +0100
committerRichard Earnshaw <rearnsha@arm.com>2022-03-29 17:38:31 +0100
commitb243ad1afb7f06ef4ab7649600d900b09b9c6b52 (patch)
tree70d566a410efb5f74d8f8d83f68f0b2361d08415 /gcc/tree.h
parent3032df28f2a1cc6514571558b76d9b80373b19c6 (diff)
downloadgcc-b243ad1afb7f06ef4ab7649600d900b09b9c6b52.zip
gcc-b243ad1afb7f06ef4ab7649600d900b09b9c6b52.tar.gz
gcc-b243ad1afb7f06ef4ab7649600d900b09b9c6b52.tar.bz2
aarch64: correctly handle zero-sized bit-fields in AAPCS64 [PR102024]
On aarch64 the AAPCS64 states that an HFA is determined by the 'shape' of the object after layout has been completed, so anything that adds no members and does not cause the layout to be modified should be ignored for the purposes of determining which registers are used for parameter passing. A zero-sized bit-field falls into this category. This was not handled correctly for C structs and in G++-11 only handled correctly because such fields were eliminated early by the front end. gcc/ChangeLog: PR target/102024 * config/aarch64/aarch64.cc (aapcs_vfp_sub_candidate): Handle zero-sized bit-fields. Detect cases where a warning may be needed. (aarch64_vfp_is_call_or_return_candidate): Emit a note if a zero-sized bit-field has caused parameter passing to change. gcc/testsuite/ChangeLog: * gcc.target/aarch64/aapcs64/test_28.c: New test.
Diffstat (limited to 'gcc/tree.h')
0 files changed, 0 insertions, 0 deletions