Kyrill Tkachov (ktkachov) <[email protected]>) commented on the code:
> +++ gcc/config/wasm/wasm-cg.cc
> @@ -0,0 +98,4 @@
> +}
> +
> +void
> +record_libcall (const_rtx sym, tree ret)
wasm_pass_by_reference passes every aggregate indirectly, while
wasm_return_in_memory returns ordinary records directly. The assembler
signature printer independently treats records as pointers. This produces
incompatible parameter/result types and can emit a result from a no-result
function.
Use one shared Basic C ABI classifier for argument lowering, return
lowering, and signature emission.
--
https://forge.sourceware.org/gcc/gcc-TEST/pulls/160#issuecomment-6595