]> gcc.gnu.org Git - gcc.git/commit
aarch64: correctly handle zero-sized bit-fields in AAPCS64 [PR102024]
authorRichard Earnshaw <rearnsha@arm.com>
Tue, 29 Mar 2022 15:07:09 +0000 (16:07 +0100)
committerRichard Earnshaw <rearnsha@arm.com>
Tue, 29 Mar 2022 16:38:31 +0000 (17:38 +0100)
commitb243ad1afb7f06ef4ab7649600d900b09b9c6b52
tree70d566a410efb5f74d8f8d83f68f0b2361d08415
parent3032df28f2a1cc6514571558b76d9b80373b19c6
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.
gcc/config/aarch64/aarch64.cc
gcc/testsuite/gcc.target/aarch64/aapcs64/test_28.c [new file with mode: 0644]
This page took 0.076066 seconds and 6 git commands to generate.