https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102024
--- Comment #20 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:3032df28f2a1cc6514571558b76d9b80373b19c6 commit r12-7895-g3032df28f2a1cc6514571558b76d9b80373b19c6 Author: Richard Earnshaw <rearn...@arm.com> Date: Tue Mar 29 10:24:49 2022 +0100 arm: correctly handle zero-sized bit-fields in AAPCS [PR102024] On arm the AAPCS 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/arm/arm.cc (aapcs_vfp_sub_candidate): Handle zero-sized bit-fields. Detect cases where a warning may be needed. (aapcs_vfp_is_call_or_return_candidate): Emit a note if a zero-sized bit-field has caused parameter passing to change. gcc/testsuite/ChangeLog: PR target/102024 * gcc.target/arm/aapcs/vfp26.c: New test.