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
