[llvm] r370225 - [AArch64][GlobalISel] Fall back when translating musttail calls
Richard Trieu via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 28 17:57:47 PDT 2019
In r370279, I've added "REQUIRES: asserts" to your test because the option
"-debug-only" needs it. Otherwise, some builds will fail the test with
unknown command line option.
On Wed, Aug 28, 2019 at 9:17 AM Jessica Paquette via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: paquette
> Date: Wed Aug 28 09:19:01 2019
> New Revision: 370225
>
> URL: http://llvm.org/viewvc/llvm-project?rev=370225&view=rev
> Log:
> [AArch64][GlobalISel] Fall back when translating musttail calls
>
> These are currently translated as normal functions calls in AArch64.
>
> Until we have proper tail call lowering, we shouldn't translate these.
>
> Differential Revision: https://reviews.llvm.org/D66842
>
> Added:
> llvm/trunk/test/CodeGen/AArch64/GlobalISel/call-translator-musttail.ll
> Modified:
> llvm/trunk/include/llvm/CodeGen/GlobalISel/CallLowering.h
> llvm/trunk/lib/CodeGen/GlobalISel/CallLowering.cpp
> llvm/trunk/lib/Target/AArch64/AArch64CallLowering.cpp
>
> Modified: llvm/trunk/include/llvm/CodeGen/GlobalISel/CallLowering.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/GlobalISel/CallLowering.h?rev=370225&r1=370224&r2=370225&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/CodeGen/GlobalISel/CallLowering.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/GlobalISel/CallLowering.h Wed Aug 28
> 09:19:01 2019
> @@ -80,6 +80,9 @@ public:
> Register SwiftErrorVReg = 0;
>
> MDNode *KnownCallees = nullptr;
> +
> + /// True if the call must be tail call optimized.
> + bool IsMustTailCall = false;
> };
>
> /// Argument handling is mostly uniform between the four places that
>
> Modified: llvm/trunk/lib/CodeGen/GlobalISel/CallLowering.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/GlobalISel/CallLowering.cpp?rev=370225&r1=370224&r2=370225&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/GlobalISel/CallLowering.cpp (original)
> +++ llvm/trunk/lib/CodeGen/GlobalISel/CallLowering.cpp Wed Aug 28 09:19:01
> 2019
> @@ -62,6 +62,7 @@ bool CallLowering::lowerCall(MachineIRBu
> CS.getInstruction()->getMetadata(LLVMContext::MD_callees);
> Info.CallConv = CS.getCallingConv();
> Info.SwiftErrorVReg = SwiftErrorVReg;
> + Info.IsMustTailCall = CS.isMustTailCall();
>
> return lowerCall(MIRBuilder, Info);
> }
>
> Modified: llvm/trunk/lib/Target/AArch64/AArch64CallLowering.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64CallLowering.cpp?rev=370225&r1=370224&r2=370225&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/AArch64CallLowering.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/AArch64CallLowering.cpp Wed Aug 28
> 09:19:01 2019
> @@ -409,6 +409,11 @@ bool AArch64CallLowering::lowerCall(Mach
> MachineRegisterInfo &MRI = MF.getRegInfo();
> auto &DL = F.getParent()->getDataLayout();
>
> + if (Info.IsMustTailCall) {
> + LLVM_DEBUG(dbgs() << "Cannot lower musttail calls yet.\n");
> + return false;
> + }
> +
> SmallVector<ArgInfo, 8> SplitArgs;
> for (auto &OrigArg : Info.OrigArgs) {
> splitToValueTypes(OrigArg, SplitArgs, DL, MRI, Info.CallConv);
>
> Added:
> llvm/trunk/test/CodeGen/AArch64/GlobalISel/call-translator-musttail.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/GlobalISel/call-translator-musttail.ll?rev=370225&view=auto
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AArch64/GlobalISel/call-translator-musttail.ll
> (added)
> +++ llvm/trunk/test/CodeGen/AArch64/GlobalISel/call-translator-musttail.ll
> Wed Aug 28 09:19:01 2019
> @@ -0,0 +1,9 @@
> +; RUN: not llc %s -mtriple aarch64-unknown-unknown
> -debug-only=aarch64-call-lowering -global-isel -o - 2>&1 | FileCheck %s
> +
> +; CHECK: Cannot lower musttail calls yet.
> +; CHECK-NEXT: LLVM ERROR: unable to translate instruction: call (in
> function: foo)
> +declare void @must_callee(i8*)
> +define void @foo(i32*) {
> + musttail call void @must_callee(i8* null)
> + ret void
> +}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190828/6dfe07c2/attachment.html>
More information about the llvm-commits
mailing list