On Wednesday, 15 August 2012 at 11:15:35 UTC, Paulo Pinto wrote:
Does this not required that the D and C compiler are in sync about data layout?

Small sizes structs are often kept in registers.

Yes, extern(C) is intended to be fully ABI-compatible with the respective C ABI on the host system. On *nix systems, this means that the System V AMD64 ABI is followed for parameter passing. The DMD implementation of it, however, still has bugs in the cases mentioned above, as the register assignment scheme is difficult to implement in Walter's backend. The current state _is_ self-consistent, though, so the problems only surface when interfacing with C code.

David

Reply via email to