dschuff wrote:

Thanks for the clarification. So we are changing the minimum size (and 
alignment with it) of the slots in the vararg buffer, meaning that the slot 
will always be at least 8 bytes. Previously it was always at least 4, but could 
be e.g. 8 for i64/f64. In wasm64 there would of course be many more i64s in 
practice. But, I'm not really understanding where the bug is, or what's causing 
a problem with Rust. Or, for that matter, what the advantage would be to a 
larger slot size. It does mean that those now-more-prevalent pointer-sized 
values will always be aligned on the stack (assuming we are also ensuring that 
the buffer itself is aligned), allowing aligned loads and stores at the cost of 
a larger buffer. Is that it? You mentioned consistency with other 
architectures, but most architectures that I'm aware of (at least, machine 
architectures) try to use the same calling convention for vararg as for regular 
calls, so wasm is a bit weird there.
Again, not that I'm necessarily against this, just trying to understand what 
the underlying issue is. 

https://github.com/llvm/llvm-project/pull/173580
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to