------- Comment #27 from hjl dot tools at gmail dot com 2009-04-09 04:43
-------
I think this one is better:
Index: i386.c
===================================================================
--- i386.c (revision 145733)
+++ i386.c (working copy)
@@ -5273,7 +5273,13 @@ classify_argument (enum machine_mode mod
return 2;
case SCmode:
classes[0] = X86_64_SSE_CLASS;
- return 1;
+ if (!(bit_offset % 64))
+ return 1;
+ else
+ {
+ classes[1] = X86_64_SSESF_CLASS;
+ return 2;
+ }
case DCmode:
classes[0] = X86_64_SSEDF_CLASS;
classes[1] = X86_64_SSEDF_CLASS;
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39678