[Bug target/64243] New: Passing and returning structures with single member of floating type via SSE registers is wrong on Windows x86-64 ABI
krzysztof.surdacki at gmail dot com
gcc-bugzilla@gcc.gnu.org
Tue Dec 9 16:43:00 GMT 2014
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.
More information about the Gcc-bugs
mailing list