... | ... | @@ -21,7 +21,7 @@ LLVM correctly follows the platform specific calling conventions for the followi |
|
|
|
|
|
Structures ((`{float, float}`, `{double, double}`, `{i32, i32, float}`, ...)) if passed by value (as opposed to by reference) are not following the platform ABI.
|
|
|
|
|
|
It seems that the LLVM calling convention for structures passed by value is to promote each member into a standalone argument, and pass those basic types using the correct conventions above. Example:
|
|
|
It [seems](https://stackoverflow.com/questions/39438033/passing-structs-by-value-in-llvm-ir) that the LLVM calling convention for structures passed by value is to promote each member into a standalone argument, and pass those basic types using the correct conventions above. Example:
|
|
|
|
|
|
* `call f({float, float})` -> `call f(float, float)`
|
|
|
* `call f({double, double})` -> `call f(double, double)`
|
... | ... | |