67 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -tailcallopt < %s -mtriple=x86_64-unknown-unknown | FileCheck %s -check-prefix=X643; RUN: llc -tailcallopt < %s -mtriple=x86_64-uefi | FileCheck %s -check-prefix=UEFI644; RUN: llc -tailcallopt < %s -mtriple=i686-unknown-unknown | FileCheck %s -check-prefix=X865 6; llc -tailcallopt should not enable tail calls from fastcc to tailcc or vice versa7 8declare tailcc i32 @tailcallee1(i32 %a1, i32 %a2, i32 %a3, i32 %a4)9 10define fastcc i32 @tailcaller1(i32 %in1, i32 %in2) nounwind {11; X64-LABEL: tailcaller1:12; X64: # %bb.0: # %entry13; X64-NEXT: pushq %rax14; X64-NEXT: movl %edi, %edx15; X64-NEXT: movl %esi, %ecx16; X64-NEXT: callq tailcallee1@PLT17; X64-NEXT: retq $818;19; UEFI64-LABEL: tailcaller1:20; UEFI64: # %bb.0: # %entry21; UEFI64-NEXT: subq $40, %rsp22; UEFI64-NEXT: movl %ecx, %r8d23; UEFI64-NEXT: movl %edx, %r9d24; UEFI64-NEXT: callq tailcallee125; UEFI64-NEXT: retq $4026;27; X86-LABEL: tailcaller1:28; X86: # %bb.0: # %entry29; X86-NEXT: pushl %edx30; X86-NEXT: pushl %ecx31; X86-NEXT: calll tailcallee1@PLT32; X86-NEXT: retl33entry:34 %tmp11 = tail call tailcc i32 @tailcallee1(i32 %in1, i32 %in2, i32 %in1, i32 %in2)35 ret i32 %tmp1136}37 38declare fastcc i32 @tailcallee2(i32 %a1, i32 %a2, i32 %a3, i32 %a4)39 40define tailcc i32 @tailcaller2(i32 %in1, i32 %in2) nounwind {41; X64-LABEL: tailcaller2:42; X64: # %bb.0: # %entry43; X64-NEXT: pushq %rax44; X64-NEXT: movl %edi, %edx45; X64-NEXT: movl %esi, %ecx46; X64-NEXT: callq tailcallee2@PLT47; X64-NEXT: retq $848;49; UEFI64-LABEL: tailcaller2:50; UEFI64: # %bb.0: # %entry51; UEFI64-NEXT: subq $40, %rsp52; UEFI64-NEXT: movl %ecx, %r8d53; UEFI64-NEXT: movl %edx, %r9d54; UEFI64-NEXT: callq tailcallee255; UEFI64-NEXT: retq $4056;57; X86-LABEL: tailcaller2:58; X86: # %bb.0: # %entry59; X86-NEXT: pushl %edx60; X86-NEXT: pushl %ecx61; X86-NEXT: calll tailcallee2@PLT62; X86-NEXT: retl63entry:64 %tmp11 = tail call fastcc i32 @tailcallee2(i32 %in1, i32 %in2, i32 %in1, i32 %in2)65 ret i32 %tmp1166}67