diff options
| author | Tim Northover <tnorthover@apple.com> | 2014-04-17 10:20:38 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2014-04-17 10:20:38 +0000 |
| commit | 5ffc092700012081ea0bd816bab56de5efcb9886 (patch) | |
| tree | 7ef3c4a2ef44513b3f3885b2121cfe13d9978bb3 /clang/test/CodeGen/arm64-aapcs-arguments.c | |
| parent | 7e107dabd69242534a6b3be0cba200826f650685 (diff) | |
| download | bcm5719-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.c | 9 |
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) { +} |

