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.

Reply via email to