https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102024
--- Comment #21 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Richard Earnshaw <rearn...@gcc.gnu.org>: https://gcc.gnu.org/g:b243ad1afb7f06ef4ab7649600d900b09b9c6b52 commit r12-7896-gb243ad1afb7f06ef4ab7649600d900b09b9c6b52 Author: Richard Earnshaw <rearn...@arm.com> Date: Tue Mar 29 16:07:09 2022 +0100 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.