[PATCH] D124998: [AArch64][SVE] Add aarch64_sve_pcs attribute to Clang

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu May 5 12:45:08 PDT 2022


aaron.ballman added a comment.

In D124998#3494500 <https://reviews.llvm.org/D124998#3494500>, @erichkeane wrote:

> In D124998#3494442 <https://reviews.llvm.org/D124998#3494442>, @efriedma wrote:
>
>> In D124998#3494426 <https://reviews.llvm.org/D124998#3494426>, @erichkeane wrote:
>>
>>> In D124998#3494424 <https://reviews.llvm.org/D124998#3494424>, @efriedma wrote:
>>>
>>>> If you're really concerned about the size of FunctionProtoType increasing, can we just shove the infrequently used calling convention bits into TrailingObjects?
>>>
>>> I don't believe so.  These are parts of the bitfield and are intrinsic to the type.
>>
>> I don't follow. Everything stored in FunctionProtoType, including information stored in TrailingObjects, is "intrinsic to the type".  It's just stored differently.  (FunctionTypeExtraBitfields already exists, even...)
>
> Ah, I see what you mean.  I misread and thought you meant on the FunctionDecl itself, so mea culpa.
>
> I was unaware of `FunctionTypeExtraBitfields`!  We perhaps should consider what of the `ExtInfo` we can move over to the `FunctionTypeExtraBitfields`.  In that list, there are MAYBE 5 bits of the 13 that are used with any level of commonness (though I have no idea what CmseNSCall means). If most of those moved, I'd be pretty ok with having even EXTRA bits added for calling convention (though, if we go over 32, we probably need to have a discussion as to whether they are valuable).

Not to be a party pooper, but that only works for `FunctionProtoType` and users can write calling conventions on functions without prototypes too, which has no trailing objects currently. However, functions without prototypes aren't a worry for deep template instantiations or the like (because they don't exist in C++), and if users are making heavy use of functions without prototypes (never been a feature in any ISO C standard), I don't particularly mind if their compilation goes slower because we now need to tail allocate data for each non-prototype function. However, we should be careful not to duplicate code as I'm pretty sure that's why `ExtInfo` is in `FunctionType` in the first place (there's no way to add a trailing object to `FunctionType` because it's subclassed).


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D124998/new/

https://reviews.llvm.org/D124998



More information about the cfe-commits mailing list