http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55147
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-11-01 09:44:22 UTC --- Created attachment 28589 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28589 gcc48-pr55147.patch So like this? Or do you want to merge the bswap{si,di}2 expanders using SWI48 iterator too? That would make i386.md tiny bit shorter, but would make gen_bswapdi2 longer (as the compiler can't figure out that for DImode (thus TARGET_64BIT) TARGET_BSWAP is always true). Perhaps I could do else if (<MODE>mode == DImode || TARGET_BSWAP) so that at least optimized gcc builds would optimize it away.