summaryrefslogtreecommitdiff
path: root/test/CodeGen/ARM64
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2014-04-16 09:03:25 +0000
committerTim Northover <tnorthover@apple.com>2014-04-16 09:03:25 +0000
commitbe50dc8b1fdf8d15f9bc4b96bc7c1184f005c1cf (patch)
treebb31127149e28bee640cd5ffe960dd2f69327114 /test/CodeGen/ARM64
parent7474c171e1185812655352e32d2a44339aab0250 (diff)
downloadllvm-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.ll10
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
+}