[llvm] r357809 - [X86] Enable tail calls for CallingConv::Swift

Francis Visoiu Mistrih via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 5 13:18:25 PDT 2019


Author: thegameg
Date: Fri Apr  5 13:18:25 2019
New Revision: 357809

URL: http://llvm.org/viewvc/llvm-project?rev=357809&view=rev
Log:
[X86] Enable tail calls for CallingConv::Swift

It's currently only enabled on AArch64 (enabled in r281376).

Modified:
    llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
    llvm/trunk/test/CodeGen/X86/swiftcc.ll

Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=357809&r1=357808&r2=357809&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Fri Apr  5 13:18:25 2019
@@ -2941,6 +2941,8 @@ static bool mayTailCallThisCC(CallingCon
   case CallingConv::X86_StdCall:
   case CallingConv::X86_VectorCall:
   case CallingConv::X86_FastCall:
+  // Swift:
+  case CallingConv::Swift:
     return true;
   default:
     return canGuaranteeTCO(CC);

Modified: llvm/trunk/test/CodeGen/X86/swiftcc.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/swiftcc.ll?rev=357809&r1=357808&r2=357809&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/swiftcc.ll (original)
+++ llvm/trunk/test/CodeGen/X86/swiftcc.ll Fri Apr  5 13:18:25 2019
@@ -1,11 +1,21 @@
-; RUN: llc -mtriple x86_64-unknown-windows-msvc -filetype asm -o - %s | FileCheck %s
+; RUN: llc -mtriple x86_64-- -filetype asm -o - %s | FileCheck %s
+; RUN: llc -mtriple x86_64-unknown-windows-msvc -filetype asm -o - %s | FileCheck %s --check-prefix=MSVC
 
 define swiftcc void @f() {
   %1 = alloca i8
   ret void
 }
 
-; CHECK-LABEL: f
-; CHECK: .seh_stackalloc 8
-; CHECK: .seh_endprologue
+; MSVC-LABEL: f
+; MSVC: .seh_stackalloc 8
+; MSVC: .seh_endprologue
 
+declare swiftcc i64 @myFunc()
+define swiftcc i64 @myFunc2()  nounwind {
+  %r = tail call swiftcc i64 @myFunc()
+  ret i64 %r
+}
+
+; CHECK-LABEL: myFunc2
+; CHECK: jmp myFunc
+; CHECK-NOT: call




More information about the llvm-commits mailing list