[llvm] r203575 - ARM: enable tail call optimisation on Thumb 2
JF Bastien
jfb at google.com
Tue Mar 11 08:24:43 PDT 2014
Hi Saleem,
If I understand correctly this isn't just for Thumb2, it's also for ARM?
On Tue, Mar 11, 2014 at 8:09 AM, Saleem Abdulrasool
<compnerd at compnerd.org>wrote:
> Author: compnerd
> Date: Tue Mar 11 10:09:44 2014
> New Revision: 203575
>
> URL: http://llvm.org/viewvc/llvm-project?rev=203575&view=rev
> Log:
> ARM: enable tail call optimisation on Thumb 2
>
> Tail call optimisation was previously disabled on all targets other than
> iOS5.0+. This enables the tail call optimisation on all Thumb 2 capable
> platforms.
>
> The test adjustments are to remove the IR hint "tail" to function
> invocation.
> The tests were designed assuming that tail call optimisations would not
> kick in
> which no longer holds true.
>
> Modified:
> llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp
> llvm/trunk/test/CodeGen/ARM/2013-04-16-AAPCS-C4-vs-VFP.ll
> llvm/trunk/test/CodeGen/ARM/2014-02-21-byval-reg-split-alignment.ll
> llvm/trunk/test/CodeGen/ARM/debug-frame.ll
> llvm/trunk/test/CodeGen/ARM/ehabi.ll
> llvm/trunk/test/CodeGen/ARM/v1-constant-fold.ll
>
> Modified: llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp?rev=203575&r1=203574&r2=203575&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp Tue Mar 11 10:09:44 2014
> @@ -219,8 +219,10 @@ void ARMSubtarget::resetSubtargetFeature
> if (isTargetMachO()) {
> IsR9Reserved = ReserveR9 | !HasV6Ops;
> SupportsTailCall = !isTargetIOS() ||
> !getTargetTriple().isOSVersionLT(5, 0);
> - } else
> + } else {
> IsR9Reserved = ReserveR9;
> + SupportsTailCall = !isThumb1Only();
> + }
>
> if (!isThumb() || hasThumb2())
> PostRAScheduler = true;
>
> Modified: llvm/trunk/test/CodeGen/ARM/2013-04-16-AAPCS-C4-vs-VFP.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/2013-04-16-AAPCS-C4-vs-VFP.ll?rev=203575&r1=203574&r2=203575&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/ARM/2013-04-16-AAPCS-C4-vs-VFP.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/2013-04-16-AAPCS-C4-vs-VFP.ll Tue Mar 11
> 10:09:44 2014
> @@ -72,7 +72,7 @@ define void @foo(double %p0, ; --> D0
> double %p8, ; --> Stack
> i32 %p9) #0 { ; --> R0, not Stack+8
> entry:
> - tail call void @fooUseI32(i32 %p9)
> + call void @fooUseI32(i32 %p9)
> ret void
> }
>
>
> Modified:
> llvm/trunk/test/CodeGen/ARM/2014-02-21-byval-reg-split-alignment.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/2014-02-21-byval-reg-split-alignment.ll?rev=203575&r1=203574&r2=203575&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/ARM/2014-02-21-byval-reg-split-alignment.ll
> (original)
> +++ llvm/trunk/test/CodeGen/ARM/2014-02-21-byval-reg-split-alignment.ll
> Tue Mar 11 10:09:44 2014
> @@ -23,7 +23,7 @@ define void @foo1(i32 %a, %struct12bytes
> ; CHECK: pop {r11, lr}
> ; CHECK: add sp, sp, #16
>
> - tail call void @useLong(i64 %c)
> + call void @useLong(i64 %c)
> ret void
> }
>
> @@ -40,7 +40,7 @@ define void @foo2(i32 %a, %struct8bytes8
> ; CHECK: pop {r11, lr}
> ; CHECK: add sp, sp, #8
>
> - tail call void @usePtr(%struct8bytes8align* %b)
> + call void @usePtr(%struct8bytes8align* %b)
> ret void
> }
>
> @@ -57,7 +57,7 @@ define void @foo3(%struct8bytes8align* b
> ; CHECK: pop {r11, lr}
> ; CHECK: add sp, sp, #16
>
> - tail call void @usePtr(%struct8bytes8align* %a)
> + call void @usePtr(%struct8bytes8align* %a)
> ret void
> }
>
> @@ -76,7 +76,7 @@ define void @foo4(%struct4bytes* byval %
> ; CHECK: add sp, sp, #16
> ; CHECK: mov pc, lr
>
> - tail call void @usePtr(%struct8bytes8align* %b)
> + call void @usePtr(%struct8bytes8align* %b)
> ret void
> }
>
> @@ -95,7 +95,7 @@ define void @foo5(%struct8bytes8align* b
> ; CHECK: add sp, sp, #16
> ; CHECK: mov pc, lr
>
> - tail call void @usePtr(%struct8bytes8align* %a)
> + call void @usePtr(%struct8bytes8align* %a)
> ret void
> }
>
> @@ -109,6 +109,6 @@ define void @foo6(i32 %a, i32 %b, i32 %c
> ; CHECK: pop {r11, lr}
> ; CHECK: mov pc, lr
>
> - tail call void @usePtr(%struct8bytes8align* %d)
> + call void @usePtr(%struct8bytes8align* %d)
> ret void
> }
>
> Modified: llvm/trunk/test/CodeGen/ARM/debug-frame.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/debug-frame.ll?rev=203575&r1=203574&r2=203575&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/ARM/debug-frame.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/debug-frame.ll Tue Mar 11 10:09:44 2014
> @@ -301,7 +301,7 @@ declare void @throw_exception_2()
>
> define void @test2() {
> entry:
> - tail call void @throw_exception_2()
> + call void @throw_exception_2()
> ret void
> }
>
>
> Modified: llvm/trunk/test/CodeGen/ARM/ehabi.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/ehabi.ll?rev=203575&r1=203574&r2=203575&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/ARM/ehabi.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/ehabi.ll Tue Mar 11 10:09:44 2014
> @@ -181,7 +181,7 @@ declare void @throw_exception_2()
>
> define void @test2() {
> entry:
> - tail call void @throw_exception_2()
> + call void @throw_exception_2()
> ret void
> }
>
>
> Modified: llvm/trunk/test/CodeGen/ARM/v1-constant-fold.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/v1-constant-fold.ll?rev=203575&r1=203574&r2=203575&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/ARM/v1-constant-fold.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/v1-constant-fold.ll Tue Mar 11 10:09:44
> 2014
> @@ -1,4 +1,4 @@
> -; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mattr=+v7,+vfp3,-neon
> | FileCheck %s
> +; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mattr=+v7,+vfp3,-neon
> | FileCheck %s
>
> ; PR15611. Check that we don't crash when constant folding v1i32 types.
>
> @@ -11,7 +11,7 @@ bb:
> %tmp3 = insertelement <4 x i32> %tmp2, i32 0, i32 3
> %tmp4 = add <4 x i32> %tmp3, <i32 -1, i32 -1, i32 -1, i32 -1>
> ; CHECK: bl bar
> - tail call void @bar(<4 x i32> %tmp4)
> + call void @bar(<4 x i32> %tmp4)
> ret void
> }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140311/7085e330/attachment.html>
More information about the llvm-commits
mailing list