Implement AAPCS64 updates for alignment attribute. 84/134284/3
authorMikhail Kashkarov <m.kashkarov@partner.samsung.com>
Thu, 15 Jun 2017 14:03:07 +0000 (17:03 +0300)
committerDongkyun Son <dongkyun.s@samsung.com>
Wed, 28 Jun 2017 11:32:24 +0000 (11:32 +0000)
commit1d929c7915bcb563f39c0012b752572428958186
tree2b664f7c41bc3e585763eef70b9343f128d56ecf
parent6da83d4adc857ba1c4370b2b8f32825d5cb13ebe
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
gcc/config/aarch64/aarch64.c
gcc/testsuite/g++.dg/abi/pr77728-2.C [new file with mode: 0644]