Extended Description
The Win32 native compiler, VC, generates a call to a function returning a struct in the following manner:
- The caller allocates a buffer which will be filled by the caller with the return value
- Before calling, the caller pushes the address of this buffer on the stack
- Unlike other targets, such as Linux32, the callee does not pop the address before returning
Currently, the Win32 target does not follow the above rules. This becomes an issue when native-compiled and LLVM-compiled codes are mixed.