[Bug target/55147] [4.8 Regression] x86: wrong code for 64-bit load
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55147 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED --- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-07 10:15:41 UTC --- Fixed.
[Bug target/55147] [4.8 Regression] x86: wrong code for 64-bit load
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55147 --- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-02 08:03:05 UTC --- Author: jakub Date: Fri Nov 2 08:03:02 2012 New Revision: 193090 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=193090 Log: PR target/55147 * config/i386/i386.md (bswapdi2): Limit to TARGET_64BIT. (*bswapdi2_doubleword): Removed. * gcc.target/i386/pr55147.c: New test. Added: trunk/gcc/testsuite/gcc.target/i386/pr55147.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/i386.md trunk/gcc/testsuite/ChangeLog
[Bug target/55147] [4.8 Regression] x86: wrong code for 64-bit load
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55147 Uros Bizjak ubizjak at gmail dot com changed: What|Removed |Added Target Milestone|--- |4.8.0 Summary|x86: wrong code for 64-bit |[4.8 Regression] x86: wrong |load|code for 64-bit load --- Comment #4 from Uros Bizjak ubizjak at gmail dot com 2012-11-01 09:27:21 UTC --- (In reply to comment #3) it creates the same number of insns/same quality (just slightly different RA decisions/scheduling) for f1-f3, but for f4 without bswapdi2 it creates slightly worse code (with bswapdi2 f4 needs just one call saved register, without it two, supposedly because both bswap insns are scheduled together. We can live with that. I have also checked that removing the pattern doesn't degrade TARGET_MOVBE, the reason for their existence is PR53227. Also, a regression from 4.7.
[Bug target/55147] [4.8 Regression] x86: wrong code for 64-bit load
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 (MODEmode == DImode || TARGET_BSWAP) so that at least optimized gcc builds would optimize it away.
[Bug target/55147] [4.8 Regression] x86: wrong code for 64-bit load
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55147 --- Comment #6 from Uros Bizjak ubizjak at gmail dot com 2012-11-01 09:48:50 UTC --- (In reply to comment #5) Created attachment 28589 [details] 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 (MODEmode == DImode || TARGET_BSWAP) so that at least optimized gcc builds would optimize it away. No, your proposed patch is OK and pre-approved for mainline SVN.