Both of these structs are passed in memory, when they should be passed via xmm regs. struct S { float a; double b; }; struct S { double a; float b; };
https://github.com/D-Programming-Language/dmd/pull/4265
Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/5dea1855f04a9e51839c33575d52139032437fc9 Fix Issue 13955 - 64 bit C ABI not followed for passing structs with mixed floating types Check code in argtypes.c should be checking that both types can be passed in xmm registers. https://github.com/D-Programming-Language/dmd/commit/ccec6fb22bce0e4ea351f14f1a2d472a883ae2f2 Merge pull request #4265 from yebblies/issue13955 Issue 13955 - 64 bit C ABI not followed for passing structs with mixed floating types
Commits pushed to 2.067 at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/5dea1855f04a9e51839c33575d52139032437fc9 Fix Issue 13955 - 64 bit C ABI not followed for passing structs with mixed floating types https://github.com/D-Programming-Language/dmd/commit/ccec6fb22bce0e4ea351f14f1a2d472a883ae2f2 Merge pull request #4265 from yebblies/issue13955