ARM: treat [N x i32] and [N x i64] as AAPCS composite types
authorTim Northover <tnorthover@apple.com>
Tue, 24 Feb 2015 17:22:34 +0000 (17:22 +0000)
committerTim Northover <tnorthover@apple.com>
Tue, 24 Feb 2015 17:22:34 +0000 (17:22 +0000)
commit5530ac99e6f7fabf6b8bc9560d40fc7a472b52bc
tree2e52e086900a5a4ba71ef5300fa0bf936dc977c3
parentbc8f84c030ea79aaf115c90327a34912c18a48fc
ARM: treat [N x i32] and [N x i64] as AAPCS composite types

The logic is almost there already, with our special homogeneous aggregate
handling. Tweaking it like this allows front-ends to emit AAPCS compliant code
without ever having to count registers or add discarded padding arguments.

Only arrays of i32 and i64 are needed to model AAPCS rules, but I decided to
apply the logic to all integer arrays for more consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230348 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/CallingConvLower.h
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
lib/Target/ARM/ARMCallingConv.h
lib/Target/ARM/ARMCallingConv.td
lib/Target/ARM/ARMISelLowering.cpp
test/CodeGen/ARM/aggregate-padding.ll [new file with mode: 0644]