AArch64: simplify PCS mapping.
authorTim Northover <tnorthover@apple.com>
Thu, 27 Nov 2014 21:02:49 +0000 (21:02 +0000)
committerTim Northover <tnorthover@apple.com>
Thu, 27 Nov 2014 21:02:49 +0000 (21:02 +0000)
commitb047bfae32123f6a5f72c79cd30659c5347b92d2
treed1ee41c7ef42c99c7f17720fd00931a70b2d539f
parent3c55ccac4846ff2a0fbddec7e3440bd88e6e2d16
AArch64: simplify PCS mapping.

Now that LLVM can count the registers needed to implement AAPCS rules, we don't
need to duplicate that logic here. This means we can drop the explicit padding
and also use more natural types in many cases (e.g. "struct { float arr[3]; }"
used to end up as "[2 x double]" to avoid holes on the stack.

The one wrinkle is that AAPCS va_arg was also using the register counting
machinery. But the local replacement isn't too bad.

llvm-svn: 222904
clang/lib/CodeGen/TargetInfo.cpp
clang/test/CodeGen/arm-aapcs-vfp.c
clang/test/CodeGen/arm-homogenous.c
clang/test/CodeGen/arm64-aapcs-arguments.c
clang/test/CodeGen/arm64-arguments.c
clang/test/CodeGenCXX/homogeneous-aggregates.cpp