I have been working on adding proper tail (via `become`) to rustc. I was able to make them work (some parts of the type checker aren't implemented yet). However, I ran into an LLVM-related problem. LLVM claims to support proper tail calls when fastcc is used — but only on i386, x86-64 and PowerPC. Is this accurate? Will proper tail calls be supported on WebAssembly? Are they supported on ARM? AArch64? Other backends? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170104/6cd0e036/attachment.html>
As a general “good practice", you should answer to your own thread you started this morning instead of starting a new one with little difference: http://lists.llvm.org/pipermail/llvm-dev/2017-January/108678.html +CC WebAssembly folks to make sure they don’t miss this question. — Mehdi> On Jan 4, 2017, at 7:07 PM, Demi Obenour via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > I have been working on adding proper tail (via `become`) to rustc. I was able to make them work (some parts of the type checker aren't implemented yet). However, I ran into an LLVM-related problem. > > LLVM claims to support proper tail calls when fastcc is used — but only on i386, x86-64 and PowerPC. Is this accurate? Will proper tail calls be supported on WebAssembly? Are they supported on ARM? AArch64? Other backends? > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
The current version of the WebAssembly ISA doesn't support tail calls. It is likely that support will be added in future versions. Dan On Jan 4, 2017 8:34 PM, "Mehdi Amini" <mehdi.amini at apple.com> wrote: As a general “good practice", you should answer to your own thread you started this morning instead of starting a new one with little difference: http://lists.llvm.org/pipermail/llvm-dev/2017-January/108678.html +CC WebAssembly folks to make sure they don’t miss this question. — Mehdi> On Jan 4, 2017, at 7:07 PM, Demi Obenour via llvm-dev <llvm-dev at lists.llvm.org> wrote:> > I have been working on adding proper tail (via `become`) to rustc. I wasable to make them work (some parts of the type checker aren't implemented yet). However, I ran into an LLVM-related problem.> > LLVM claims to support proper tail calls when fastcc is used — but onlyon i386, x86-64 and PowerPC. Is this accurate? Will proper tail calls be supported on WebAssembly? Are they supported on ARM? AArch64? Other backends?> _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170104/db4d9dc4/attachment.html>
Joerg Sonnenberger via llvm-dev
2017-Jan-05 13:04 UTC
[llvm-dev] Tail calls and portability
On Wed, Jan 04, 2017 at 10:07:34PM -0500, Demi Obenour via llvm-dev wrote:> LLVM claims to support proper tail calls when fastcc is used — but only on > i386, x86-64 and PowerPC. Is this accurate? Will proper tail calls be > supported on WebAssembly? Are they supported on ARM? AArch64? Other > backends?Note that tail calls on PowerPC can run into the TOC-restoration issue for non-PIC calls. Joerg
There is some support for tail calls for MIPS, but it is not enabled by default yet. Thanks, Simon From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Demi Obenour via llvm-dev Sent: 05 January 2017 03:08 To: llvm-dev at lists.llvm.org Subject: [llvm-dev] Tail calls and portability I have been working on adding proper tail (via `become`) to rustc. I was able to make them work (some parts of the type checker aren't implemented yet). However, I ran into an LLVM-related problem. LLVM claims to support proper tail calls when fastcc is used — but only on i386, x86-64 and PowerPC. Is this accurate? Will proper tail calls be supported on WebAssembly? Are they supported on ARM? AArch64? Other backends?
Krzysztof Parzyszek via llvm-dev
2017-Jan-05 15:48 UTC
[llvm-dev] Tail calls and portability
On 1/4/2017 9:07 PM, Demi Obenour via llvm-dev wrote:> I have been working on adding proper tail (via `become`) to rustc. I > was able to make them work (some parts of the type checker aren't > implemented yet). However, I ran into an LLVM-related problem. > > LLVM claims to support proper tail calls when fastcc is used — but only > on i386, x86-64 and PowerPC. Is this accurate? Will proper tail calls > be supported on WebAssembly? Are they supported on ARM? AArch64? Other > backends?Hexagon uses tail calls in the right circumstances, but it ignores musttail. -Krzysztof -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation