[llvm] r254737 - [CXX TLS calling convention] Add CXX TLS calling convention.

James Y Knight via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 7 06:54:08 PST 2015


On the other hand, CSR_AArch64_TLS_ELF isn't actually used, because AArch64
ELF TLS calls need to use a special call sequence in order for linker
optimization magic to work.

I don't think anyone's said yet, what is the reason for wanting an
exposed-to-the-IR calling convention for the TLS entrypoint? All of the
llvm targets special case the TLS stuff anyhow -- which seems probably a
good thing, since for so many archs it really *is* a weird special case,
and not at all just a different function call convention.

On Fri, Dec 4, 2015 at 5:11 PM, Manman Ren <manman.ren at gmail.com> wrote:

>
>
> On Fri, Dec 4, 2015 at 2:05 PM, James Y Knight <jyknight at google.com>
> wrote:
>
>> On Dec 4, 2015, at 4:44 PM, Joerg Sonnenberger via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>> > On Fri, Dec 04, 2015 at 04:35:14PM -0500, James Y Knight wrote:
>> >> On Dec 4, 2015, at 2:32 PM, Joerg Sonnenberger via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>> >>> On Fri, Dec 04, 2015 at 05:40:13PM -0000, Manman Ren via llvm-commits
>> wrote:
>> >>>> Author: mren
>> >>>> Date: Fri Dec  4 11:40:13 2015
>> >>>> New Revision: 254737
>> >>>>
>> >>>> URL: http://llvm.org/viewvc/llvm-project?rev=254737&view=rev
>> >>>> Log:
>> >>>> [CXX TLS calling convention] Add CXX TLS calling convention.
>> >>>
>> >>> What the motivation for this? Is there any ABI documentation for it?
>> >>
>> >>
>> >> This seems very much like an x86_64-Darwin specific calling convention,
>> >> which is masquerading as a generic calling convention. Why not call it
>> >> what it actually is, instead of pretending it's something generically
>> useful?
>> >
>> > I'm not sure if it is Darwin-specific, but one of the things I wonder
>> > about is the "CXX" part in the name. If it is for use by dynamic TLS
>> > initialisers, there is nothing C++ specific about it.
>>
>>
>> It seems to me darwin-specific, because the stated reason for adding it
>> is that Darwin has pre-existing functions using this particular calling
>> convention. It's otherwise exactly the same intent as preserve_mostcc,
>> right? (The difference being that on x86_64, this preserves all GPRs except
>> RAX and RDI, and preserve_most preserves all GPRs except R11).
>
>
> ELF also has its own C-style implementation, which can be different from
> preserve_most.
> I saw CSR_AArch64_TLS_ELF in AArch64CallingConvention.td.
>
> I don't see any precedence of putting a platform name in the name of a
> calling convention, it is either language specific or target specific.
> (it may exist, but I didn't notice :)
>
> Cheers,
> Manman
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151207/d580ec49/attachment.html>


More information about the llvm-commits mailing list