https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64243
Bug ID: 64243 Summary: Passing and returning structures with single member of floating type via SSE registers is wrong on Windows x86-64 ABI Product: gcc Version: 4.9.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: krzysztof.surdacki at gmail dot com Two types of structures: struct TestFloat { float x; }; struct TestDouble { double x; }; are passed and returned via SSE registers which is wrong in Windows x86-64 ABI. According to Microsoft documentation: http://msdn.microsoft.com/en-us/library/zthk2dkh.aspx http://msdn.microsoft.com/en-us/library/7572ztz4.aspx and code generated by MSVS2013 analysis, this kind of structures should be passed via integer registers (RCX, RDX, R8, and R9) and returned in RAX register.