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

James Y Knight via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 4 14:05:29 PST 2015


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).


More information about the llvm-commits mailing list