[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