Remove iOS 5 check for tailcalls on ARM (#133354)
Fixes #102053
The check was added in 8decdc472f308b13d7fb7fd50c3919db086c0417, 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.
diff --git a/llvm/lib/Target/ARM/ARMSubtarget.cpp b/llvm/lib/Target/ARM/ARMSubtarget.cpp
index 8930847..759070c 100644
--- a/llvm/lib/Target/ARM/ARMSubtarget.cpp
+++ b/llvm/lib/Target/ARM/ARMSubtarget.cpp
@@ -226,9 +226,6 @@
SupportsTailCall = !isThumb1Only() || hasV8MBaselineOps();
- if (isTargetMachO() && isTargetIOS() && getTargetTriple().isOSVersionLT(5, 0))
- SupportsTailCall = false;
-
switch (IT) {
case DefaultIT:
RestrictIT = false;
diff --git a/llvm/test/CodeGen/ARM/2010-11-29-PrologueBug.ll b/llvm/test/CodeGen/ARM/2010-11-29-PrologueBug.ll
index ff1e769..b3b6c77 100644
--- a/llvm/test/CodeGen/ARM/2010-11-29-PrologueBug.ll
+++ b/llvm/test/CodeGen/ARM/2010-11-29-PrologueBug.ll
@@ -9,8 +9,8 @@
; CHECK: mov r7, sp
; CHECK: bl _foo
; CHECK: bl _foo
-; CHECK: bl _foo
-; CHECK: pop {r7, pc}
+; CHECK: pop
+; CHECK: b
%0 = tail call ptr @foo(ptr %x) nounwind
%1 = tail call ptr @foo(ptr %0) nounwind
diff --git a/llvm/test/CodeGen/ARM/ldm.ll b/llvm/test/CodeGen/ARM/ldm.ll
index 2f74860..2d2fc57 100644
--- a/llvm/test/CodeGen/ARM/ldm.ll
+++ b/llvm/test/CodeGen/ARM/ldm.ll
@@ -5,9 +5,9 @@
define i32 @t1() {
; CHECK-LABEL: t1:
-; CHECK: pop
+; CHECK: ldrd
; V4T-LABEL: t1:
-; V4T: pop
+; V4T: ldm
%tmp = load i32, ptr @X ; <i32> [#uses=1]
%tmp3 = load i32, ptr getelementptr ([0 x i32], ptr @X, i32 0, i32 1) ; <i32> [#uses=1]
%tmp4 = tail call i32 @f1( i32 %tmp, i32 %tmp3 ) ; <i32> [#uses=1]
@@ -16,9 +16,9 @@
define i32 @t2() {
; CHECK-LABEL: t2:
-; CHECK: pop
+; CHECK: ldm
; V4T-LABEL: t2:
-; V4T: pop
+; V4T: ldm
%tmp = load i32, ptr getelementptr ([0 x i32], ptr @X, i32 0, i32 2) ; <i32> [#uses=1]
%tmp3 = load i32, ptr getelementptr ([0 x i32], ptr @X, i32 0, i32 3) ; <i32> [#uses=1]
%tmp5 = load i32, ptr getelementptr ([0 x i32], ptr @X, i32 0, i32 4) ; <i32> [#uses=1]
diff --git a/llvm/test/CodeGen/ARM/zextload_demandedbits.ll b/llvm/test/CodeGen/ARM/zextload_demandedbits.ll
index 8519d30..fe6febd 100644
--- a/llvm/test/CodeGen/ARM/zextload_demandedbits.ll
+++ b/llvm/test/CodeGen/ARM/zextload_demandedbits.ll
@@ -10,8 +10,7 @@
; CHECK: quux
; CHECK: lsl
; CHECK: asr
-; CHECK: bl
-; CHECK: pop
+; CHECK: b
define void @quux(ptr %arg) {
bb:
%tmp1 = getelementptr inbounds %struct.eggs, ptr %arg, i32 0, i32 1