From 5122ddd5d5cdd9b7ec3fe4b2e8e4cee3eee635cc Mon Sep 17 00:00:00 2001 From: Francis Visoiu Mistrih Date: Fri, 5 Apr 2019 20:18:25 +0000 Subject: [PATCH] [X86] Enable tail calls for CallingConv::Swift It's currently only enabled on AArch64 (enabled in r281376). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357809 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86ISelLowering.cpp | 2 ++ test/CodeGen/X86/swiftcc.ll | 18 ++++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 6ad615a94e9..0e0d07b349f 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -2941,6 +2941,8 @@ static bool mayTailCallThisCC(CallingConv::ID CC) { case CallingConv::X86_StdCall: case CallingConv::X86_VectorCall: case CallingConv::X86_FastCall: + // Swift: + case CallingConv::Swift: return true; default: return canGuaranteeTCO(CC); diff --git a/test/CodeGen/X86/swiftcc.ll b/test/CodeGen/X86/swiftcc.ll index dc36ee247f1..2e71307fe76 100644 --- a/test/CodeGen/X86/swiftcc.ll +++ b/test/CodeGen/X86/swiftcc.ll @@ -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 -- 2.40.0