Skip to content

Commit 6f34d03

Browse files
authored
Remove iOS 5 check for tailcalls on ARM (llvm#133354)
Fixes llvm#102053 The check was added in 8decdc4, and at the time iOS 5 was the latest iOS version, before that commit tail calls were disabled for all ARMv7 targets. Testing a build of wasm3 with the patch on a device running iOS 3.0 shows a noticeable performance improvement and no issues.
1 parent b0d0636 commit 6f34d03

File tree

4 files changed

+7
-11
lines changed

4 files changed

+7
-11
lines changed

llvm/lib/Target/ARM/ARMSubtarget.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,9 +226,6 @@ void ARMSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) {
226226

227227
SupportsTailCall = !isThumb1Only() || hasV8MBaselineOps();
228228

229-
if (isTargetMachO() && isTargetIOS() && getTargetTriple().isOSVersionLT(5, 0))
230-
SupportsTailCall = false;
231-
232229
switch (IT) {
233230
case DefaultIT:
234231
RestrictIT = false;

llvm/test/CodeGen/ARM/2010-11-29-PrologueBug.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ entry:
99
; CHECK: mov r7, sp
1010
; CHECK: bl _foo
1111
; CHECK: bl _foo
12-
; CHECK: bl _foo
13-
; CHECK: pop {r7, pc}
12+
; CHECK: pop
13+
; CHECK: b
1414

1515
%0 = tail call ptr @foo(ptr %x) nounwind
1616
%1 = tail call ptr @foo(ptr %0) nounwind

llvm/test/CodeGen/ARM/ldm.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
define i32 @t1() {
77
; CHECK-LABEL: t1:
8-
; CHECK: pop
8+
; CHECK: ldrd
99
; V4T-LABEL: t1:
10-
; V4T: pop
10+
; V4T: ldm
1111
%tmp = load i32, ptr @X ; <i32> [#uses=1]
1212
%tmp3 = load i32, ptr getelementptr ([0 x i32], ptr @X, i32 0, i32 1) ; <i32> [#uses=1]
1313
%tmp4 = tail call i32 @f1( i32 %tmp, i32 %tmp3 ) ; <i32> [#uses=1]
@@ -16,9 +16,9 @@ define i32 @t1() {
1616

1717
define i32 @t2() {
1818
; CHECK-LABEL: t2:
19-
; CHECK: pop
19+
; CHECK: ldm
2020
; V4T-LABEL: t2:
21-
; V4T: pop
21+
; V4T: ldm
2222
%tmp = load i32, ptr getelementptr ([0 x i32], ptr @X, i32 0, i32 2) ; <i32> [#uses=1]
2323
%tmp3 = load i32, ptr getelementptr ([0 x i32], ptr @X, i32 0, i32 3) ; <i32> [#uses=1]
2424
%tmp5 = load i32, ptr getelementptr ([0 x i32], ptr @X, i32 0, i32 4) ; <i32> [#uses=1]

llvm/test/CodeGen/ARM/zextload_demandedbits.ll

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-
1010
; CHECK: quux
1111
; CHECK: lsl
1212
; CHECK: asr
13-
; CHECK: bl
14-
; CHECK: pop
13+
; CHECK: b
1514
define void @quux(ptr %arg) {
1615
bb:
1716
%tmp1 = getelementptr inbounds %struct.eggs, ptr %arg, i32 0, i32 1

0 commit comments

Comments
 (0)