summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/arm64-aapcs-arguments.c
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2014-04-17 10:20:38 +0000
committerTim Northover <tnorthover@apple.com>2014-04-17 10:20:38 +0000
commit5ffc092700012081ea0bd816bab56de5efcb9886 (patch)
tree7ef3c4a2ef44513b3f3885b2121cfe13d9978bb3 /clang/test/CodeGen/arm64-aapcs-arguments.c
parent7e107dabd69242534a6b3be0cba200826f650685 (diff)
downloadbcm5719-llvm-5ffc092700012081ea0bd816bab56de5efcb9886.tar.gz
bcm5719-llvm-5ffc092700012081ea0bd816bab56de5efcb9886.zip
ARM64: remove holes from *all* HFAs on the stack.
My first attempt to make sure HFAs were contiguous was in the block dealing with padding registers, which meant it only triggered on the first stack-based HFA. This should extend it to the rest as well. Another part of PR19432. llvm-svn: 206456
Diffstat (limited to 'clang/test/CodeGen/arm64-aapcs-arguments.c')
-rw-r--r--clang/test/CodeGen/arm64-aapcs-arguments.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/test/CodeGen/arm64-aapcs-arguments.c b/clang/test/CodeGen/arm64-aapcs-arguments.c
index 283296c4ca4..1deeb2530f4 100644
--- a/clang/test/CodeGen/arm64-aapcs-arguments.c
+++ b/clang/test/CodeGen/arm64-aapcs-arguments.c
@@ -12,3 +12,12 @@ void test1(int x0, __int128 x2_x3, __int128 x4_x5, __int128 x6_x7, Small sp) {
// CHECK: void @test2(i32 %x0, i128 %x2_x3.coerce, i32 %x4, i128 %x6_x7.coerce, i32 %sp, i128 %sp16.coerce)
void test2(int x0, Small x2_x3, int x4, Small x6_x7, int sp, Small sp16) {
}
+
+// We coerce HFAs into a contiguous [N x double] type if they're going on the
+// stack in order to avoid holes. Make sure we get all of them, and not just the
+// first:
+
+// CHECK: void @test3(float %s0_s3.0, float %s0_s3.1, float %s0_s3.2, float %s0_s3.3, float %s4, [3 x float], [2 x double] %sp.coerce, [2 x double] %sp16.coerce)
+typedef struct { float arr[4]; } HFA;
+void test3(HFA s0_s3, float s4, HFA sp, HFA sp16) {
+}
OpenPOWER on IntegriCloud