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.

Reply via email to