http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57564
Bug ID: 57564 Summary: regmove switched operands? Product: gcc Version: 4.8.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: ncahill_alt at yahoo dot com Created attachment 30278 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30278&action=edit Testcase With x86 GCC 4.8.1 (32-bit), bzip2 built with -O1 decompresses files more quickly than with -O2. I found that -O2 -fno-regmove restores the performance. Looking at the output, I saw the following. I have attached a reduced testcase to generate a similar pattern: movl %eax, 40(%esp) shrl %cl, 40(%esp) andl $7, 40(%esp) movl 40(%esp), %eax The command: gcc -S -O2 -pipe -c reduceme.c -o decompress.s Thanks. Neil Cahill.