JonChesterfield wrote:

This PR is invalid.

First, the alignment on the eight byte pointer is supposed to be four. 
Increasing it to 8 makes things worse.

Second, I can't see any support for the claim that the code is incrementing by 
the alignment of the value, as opposed to the size.

The frame is setup as a struct instance with explicit padding by Int8Tys and 
the calculation there is correct.

The va_arg increment is done in CodeGen:emitVoidPtrVAArg, where DirectSize is 
ValueInfo.Width, aligned to the 4 byte slot size, then stored. It does not 
increment the iterator by the alignment of the type.

The lowering pass is doing exactly what was intended.


https://github.com/llvm/llvm-project/pull/96370
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to