https://sourceware.org/bugzilla/show_bug.cgi?id=21197
Bug ID: 21197
Summary: Why Function Argument Did Not Pass in SSE Register
With Attributes sseregparm When Param Data Type is
Long Double?
Product: binutils
Version: 2.28
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: binutils
Assignee: unassigned at sourceware dot org
Reporter: rudyy.id at gmail dot com
Target Milestone: ---
This is the wrong assembler code generate by as (I think):
/* xmm6 is Long Double */
69660 2e392 0F29B424 movaps XMMWORD PTR 256[rsp], xmm6
69660 00010000
/* xmm6 in the stack */
69661 2e39a 488DAC24 lea rbp, 256[rsp]
69661 00010000
/* xmm6 should goes into xmm0 not stack (rcx) */
69662 2e3a2 4889E9 mov rcx, rbp
/* ldclass Only support parameter passing in xmm0 not stack (RCX) */
69663 2e3a5 FF150000 call [QWORD PTR .refptr.__imp__ldclass[rip]]
The correct code should be like this:
movaps xmm0, xmm6
call [QWORD PTR .refptr.__imp__ldclass[rip]]
Is this a bug?
If its not, can someone help me, how to make the code look like above?
Thanks.
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-binutils