Investigating the few remaining testsuite failures on Solaris 11/x86, I came across
FAIL: gcc.target/i386/abi-2.c scan-assembler-times ymm0 1 In the assembler output, ymm0 appears twice: vmovdqa .LC0, %ymm0 vmovdqa %ymm0, (%eax) FAIL: gcc.target/i386/pr22076.c scan-assembler-times movq 3 movq appears only twice: paddb .LC0, %mm0 movl 24(%esp), %eax movq %mm0, 8(%esp) FAIL: gcc.target/i386/pr22076.c scan-assembler-not movl movl appears 5 times The failures occur only for 32-bit. Both failures seem to be due to i386.c (ix86_sol10_return_in_memory): unlike return_in_memory_32, that function doesn't know about AVX yet. It seems like the testcase needs to take the differing Solaris 2/x86 ABI for MMX, though it's unusual that the 32-bit ABI should have changed between Solaris 9 and 10. Perhaps Richard can shed some light on this? Given this divergence between the generic and sol10 function, it seems unwise to leave them separate. Instead, I'd rather have code (conditional on say TARGET_SOLARIS or TARGET_SOLARIS10) in return_in_memory_32 to handle the Solaris ABI requirements there. The only problem with such an approach is that i386/vx-common.h uses ix86_sol10_return_in_memory, too, but would probably be interested in every possible code conditional on TARGET_SOLARIS. -- Summary: gcc.target/i386/abi-2.c and gcc.target/i386/pr22076.c fail on 32-bit Solaris 10+/x86 Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ro at gcc dot gnu dot org GCC build triplet: i386-pc-solaris2.11 GCC host triplet: i386-pc-solaris2.11 GCC target triplet: i386-pc-solaris2.11 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44452