1; RUN: llc < %s -mtriple=x86_64-pc-linux | FileCheck %s
2
3declare x86_64_win64cc void @win64_callee(i32)
4declare void @sysv_callee(i32)
5
6define void @sysv_caller(i32 %p1) {
7entry:
8  tail call x86_64_win64cc void @win64_callee(i32 %p1)
9  ret void
10}
11
12; CHECK-LABEL: sysv_caller:
13; CHECK: subq $40, %rsp
14; CHECK: callq win64_callee
15; CHECK: addq $40, %rsp
16; CHECK: retq
17
18define x86_64_win64cc void @win64_caller(i32 %p1) {
19entry:
20  tail call void @sysv_callee(i32 %p1)
21  ret void
22}
23
24; CHECK-LABEL: win64_caller:
25; CHECK: callq sysv_callee
26; CHECK: retq
27
28define void @sysv_matched(i32 %p1) {
29  tail call void @sysv_callee(i32 %p1)
30  ret void
31}
32
33; CHECK-LABEL: sysv_matched:
34; CHECK: jmp sysv_callee # TAILCALL
35
36define x86_64_win64cc void @win64_matched(i32 %p1) {
37  tail call x86_64_win64cc void @win64_callee(i32 %p1)
38  ret void
39}
40
41; CHECK-LABEL: win64_matched:
42; CHECK: jmp win64_callee # TAILCALL
43