------- Comment #4 from rfm at gnu dot org 2009-11-12 11:48 ------- I'm a bit disappointed at the lack of activity on this bug report.
I've been looking at the libffi code myself (though I'm certainly no expert at this low-level stuff) and have come up with two issues: 1. If I edit libffi-3.0.9rc3/src/x86/ffi64.c and comment out the condition || (n == 2 && SSE_CLASS_P (classes[0]) == SSE_CLASS_P (classes[1])) in ffi_closure_unix64_inner() then this bug goes away (and the change does not appear to break anything in the testsuite). Perhaps someone who understands this stuff could look at this and see why this change appears to fix things (and what it might be breaking). 2. In the classify_argument() function in the same file, there is a comment which reads: /* X86_64_X87UP_CLASS should be preceded by X86_64_X87_CLASS. */ This doesn't match what the code does ... perhaps the code needs to be changed to match the comment... classes[i] = X86_64_X87_CLASS; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41908