http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49281
H.J. Lu <hjl.tools at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |4.7.0 Summary|lea_general_4 doesn't work |lea_general_4 is wrong |for x32 | --- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> 2011-06-04 15:16:38 UTC --- I don't think from movl %eax, %ecx orl $1, %ecx sall $2, %ecx to leal 4(,%rax,4), %ecx is valid transformation. For EAX == 43, leal 4(,%rax,4), %ecx gives "43*4 + 4" == 176. But movl %eax, %ecx orl $1, %ecx sall $2, %ecx gives "(43 | 1) << 2" == 172. I don't see how it can work.