diff options
author | Tim Northover <tnorthover@apple.com> | 2014-04-16 09:03:25 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2014-04-16 09:03:25 +0000 |
commit | be50dc8b1fdf8d15f9bc4b96bc7c1184f005c1cf (patch) | |
tree | bb31127149e28bee640cd5ffe960dd2f69327114 /test/CodeGen/ARM64 | |
parent | 7474c171e1185812655352e32d2a44339aab0250 (diff) | |
download | llvm-be50dc8b1fdf8d15f9bc4b96bc7c1184f005c1cf.tar.gz llvm-be50dc8b1fdf8d15f9bc4b96bc7c1184f005c1cf.tar.bz2 llvm-be50dc8b1fdf8d15f9bc4b96bc7c1184f005c1cf.tar.xz |
ARM64: mark x7 as used when an i128 gets shunted onto the stack.
The second half of a split i128 was ending up in x7, which is not a good thing.
This is another part of PR19432.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206366 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/ARM64')
-rw-r--r-- | test/CodeGen/ARM64/aapcs.ll | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/test/CodeGen/ARM64/aapcs.ll b/test/CodeGen/ARM64/aapcs.ll index 27d2aa7b77..fc1266ccfe 100644 --- a/test/CodeGen/ARM64/aapcs.ll +++ b/test/CodeGen/ARM64/aapcs.ll @@ -84,3 +84,13 @@ define void @test_variadic() { ; CHECK: bl variadic ret void } + +; We weren't marking x7 as used after deciding that the i128 didn't fit into +; registers and putting the first half on the stack, so the *second* half went +; into x7. Yuck! +define i128 @test_i128_shadow([7 x i64] %x0_x6, i128 %sp) { +; CHECK-LABEL: test_i128_shadow: +; CHECK: ldp x0, x1, [sp] + + ret i128 %sp +} |