[LLVMdev] Handling SRet on Windows x86

Joe Groff
Thu, 28 Mar 2013 19:35:21 -0000

On Thu, Mar 28, 2013 at 12:19 PM, Óscar Fuentes <ofv at wanadoo.es> wrote:

> What do you mean by "the full platform"? Every propietary
extension that
> MS came with along all these years? (From structured exceptions to
> whatever Windows RT requires?)
>
> MinGW is very well capable of using the Win32 API. There is partial or
> non-existent support for extensions such as COM, but those are not part
> of the "ABI", for sure.
>

Mingw interoperates with the Win32 API, yes, but it's able to without
having full C ABI compatibility with MSVC. For one, most of the Win32 API
has its own "stdcall" calling convention, which is different from
either
Mingw's or MSVC's "cdecl" ABIs. The Win32 API also avoids
passing or
returning structs or other non-primitives by value, because C and Pascal
compilers back in the early 90s didn't behave consistently outside of a
small subset of C functionality, and MSVC and Mingw still don't.


> Irrelevant too, since those "MSVC binaries" (whatever that means)
are
> usable by the other compilers.
>

Not unless the library authors take pains to only export APIs that conform
to the subset of MSVC's and Mingw's ABIs that are compatible.

-Joe
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20130328/ff57b631/attachment.html>