]> granicus.if.org Git - clang/commit
Handle "homogeneous aggregates" as required by the ARM AAPCS-VFP ABI.
authorBob Wilson <bob.wilson@apple.com>
Wed, 3 Aug 2011 05:58:22 +0000 (05:58 +0000)
committerBob Wilson <bob.wilson@apple.com>
Wed, 3 Aug 2011 05:58:22 +0000 (05:58 +0000)
commit194f06a476d299a7a70e5ff1d152f5895dc0a76c
tree2e30d8cdcd5fca7ffb191b53b96dd5f62cf77064
parenteb3058a114edd3a3bff1011554aafc95b529a975
Handle "homogeneous aggregates" as required by the ARM AAPCS-VFP ABI.

A homogeneous aggregate is an aggregate data structure where after flattening
any nesting there are 1 to 4 elements of the same base type that is either a
float, double, or Neon vector.  All Neon vectors of the same size, either 64
or 128 bits, are treated as equivalent for this purpose.  When using the
AAPCS-VFP ABI, check for homogeneous aggregates and pass them as arguments by
expanding them into a sequence of their base types.  This requires extending
the existing support for expanded arguments to handle not only structs, but
also constant arrays and complex types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136767 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/CGCall.cpp
lib/CodeGen/TargetInfo.cpp
test/CodeGen/arm-aapcs-vfp.c [new file with mode: 0644]