efriedma-quic wrote: > Both s390x and x86_64 ABIs require passing large structs via a pointer
Wrong. x86_64 passes structs by value (copying the data into the argument list). It just looks like a pointer in the IR because LLVM can't really handle large values in registers. --- The semantics of byval are "the call instruction allocates memory, and copies the argument into that memory". That generally means copying the memory into the argument list, although LangRef doesn't actually mandate that. If byval were actually implemented correctly for SystemZ, adding would completely change the generated code in a way that's not actually compatible with the SystemZ C ABI. https://github.com/llvm/llvm-project/pull/66404 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits