Implement AAPCS64 updates for alignment attribute.
PR target/77728
gcc/
* config/aarch64/aarch64.c(aarch64_function_arg_alignmentq):
Rewrite, looking one level down for records and arrays.
Ignore TYPE_FIELDS chain decls other than FIELD_DECLs.
(aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
(aarch64_function_arg_boundary): Likewise. Simplify using MIN/MAX.
(aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
caller.
testsuite/
* g++.dg/abi/pr77728-2.C: New test.
Backported from trunk:
be35fa06e8f976e1cb880988d5c82813106922fd
32cb614ad1f60267f914e38da26a73259299d720
26312b0ea5f3dfc6e3d8d8d18c76d464d6fa328e
Change-Id: I4293167468353e9730dc918b87edda4484af8315