arsenm added a comment.

In D55067#1313419 <https://reviews.llvm.org/D55067#1313419>, @rjmccall wrote:

> I understand that it's copied into a properly-aligned local variable, but if 
> it affects how the function is called, that's also part of the ABI, and it 
> should be taken from the C alignment, not any vagaries of how struct types 
> are translated into IR.
>
> The other reason to stick with the C alignment value is that it's actually 
> stable across compiler reasons, whereas IRGen does not promise to use the 
> same IR type for a struct across compiler versions.
>
> Now, you're a GPU compiler, so maybe you don't have any ABI requirements, or 
> maybe they're weaker for kernel functions, in which case this is basically 
> irrelevant.  But if you do care about compatibility here, you should be 
> aiming to communicate the alignment of this parameter correctly.
>
> This is part of why we largely try to avoid using arbitrary first-class 
> aggregate as parameters in IR.


byval isn't suitable for the purposes of the entry point here, so I don't see 
what the alternative is with the current constraints. We've defined the ABI 
input buffer as just the ABI allocation size/alignment of the IR type in order. 
Clang needs to get this to match what it wants.

The alternative I would like is to stop using the IR argument list at all for 
kernels. All arguments would be accessed from offsets from an intrinsic call


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

https://reviews.llvm.org/D55067



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to