Refine return value adjustments for thunks.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85905 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/CodeGenCXX/virt.cpp b/test/CodeGenCXX/virt.cpp
index e3b4526..e0067d6 100644
--- a/test/CodeGenCXX/virt.cpp
+++ b/test/CodeGenCXX/virt.cpp
@@ -91,6 +91,36 @@
// CHECK-LP64: movl $1, 12(%rax)
// CHECK-LP64: movl $2, 8(%rax)
+// FIXME: This is the wrong thunk, but until these issues are fixed, better
+// than nothing.
+// CHECK-LP64: __ZTcvn16_n72_v16_n32_N8test16_D4foo1Ev27:
+// CHECK-LP64-NEXT:Leh_func_begin33:
+// CHECK-LP64-NEXT: subq $24, %rsp
+// CHECK-LP64-NEXT:Llabel33:
+// CHECK-LP64-NEXT: movq %rdi, %rax
+// CHECK-LP64-NEXT: movq %rax, 8(%rsp)
+// CHECK-LP64-NEXT: movq 8(%rsp), %rax
+// CHECK-LP64-NEXT: movq %rax, %rcx
+// CHECK-LP64-NEXT: movabsq $-16, %rdx
+// CHECK-LP64-NEXT: addq %rdx, %rcx
+// CHECK-LP64-NEXT: movq -16(%rax), %rax
+// CHECK-LP64-NEXT: movq -72(%rax), %rax
+// CHECK-LP64-NEXT: addq %rax, %rcx
+// CHECK-LP64-NEXT: movq %rcx, %rax
+// CHECK-LP64-NEXT: movq %rax, %rdi
+// CHECK-LP64-NEXT: call __ZN8test16_D4foo1Ev
+// CHECK-LP64-NEXT: movq %rax, %rcx
+// CHECK-LP64-NEXT: movabsq $16, %rdx
+// CHECK-LP64-NEXT: addq %rdx, %rcx
+// CHECK-LP64-NEXT: movq 16(%rax), %rax
+// CHECK-LP64-NEXT: movq -32(%rax), %rax
+// CHECK-LP64-NEXT: addq %rax, %rcx
+// CHECK-LP64-NEXT: movq %rcx, %rax
+// CHECK-LP64-NEXT: movq %rax, 16(%rsp)
+// CHECK-LP64-NEXT: movq 16(%rsp), %rax
+// CHECK-LP64-NEXT: addq $24, %rsp
+// CHECK-LP64-NEXT: ret
+
struct test12_A {
virtual void foo0() { }
virtual void foo();