rjmccall added a comment.

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.


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