Bug 13955 – 64 bit C ABI not followed for passing structs with mixed floating types

Status
RESOLVED
Resolution
FIXED
Severity
major
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
x86_64
OS
Linux
Creation time
2015-01-08T15:49:00Z
Last change time
2015-02-18T03:42:08Z
Keywords
pull, wrong-code
Assigned to
yebblies
Creator
yebblies

Comments

Comment #0 by yebblies — 2015-01-08T15:49:02Z
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; };
Comment #1 by yebblies — 2015-01-08T15:58:34Z
Comment #2 by github-bugzilla — 2015-01-08T18:46:48Z
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
Comment #3 by github-bugzilla — 2015-02-18T03:42:08Z
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