https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66126

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |INVALID

--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Richard Biener from comment #1)
> i?86 passes it in %mm0 (oops) (with -msse2), even if the function is
> externally visible.
> 
> I think -msse shouldn't change the ABI.

8-byte vectors are passed to functions in mmx registers. This is part of 32bit
ABI. The 64bit ABI is different, 8-byte vectors are passed in sse registers.

The problem is that when mmx register is referenced, shared x87/mmx register
stack switches into mmx mode until emms is executed. When in mmx mode, all x87
registers show nan.

This is not a gcc bug.

Reply via email to