------- 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