rjmccall added a comment.

In D55067#1318810 <https://reviews.llvm.org/D55067#1318810>, @arsenm wrote:

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


What I have said, repeatedly, is that that is not a good ABI rule because the 
alignment of the IR type is not guaranteed to be meaningful or even stable.  
Maybe there are good reasons why you don't care about having a stable ABI, but 
I need you to at least acknowledge that that's what you're doing, because 
otherwise it is hard for me to approve a patch that I know has this problem.

> 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

That seems like a very reasonable alternative, or you could have the function 
take a single pointer argument and do all accesses relative to that.  I'll 
leave that up to you.


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