http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55247
H.J. Lu <hjl.tools at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |UNCONFIRMED Component|middle-end |rtl-optimization Depends on| |55259 Ever Confirmed|1 |0 --- Comment #12 from H.J. Lu <hjl.tools at gmail dot com> 2012-11-10 19:02:04 UTC --- (In reply to comment #11) > ~/gcc-build/gcc/cc1 -O2 -mx32 -maddress-mode=long pr55247.c > > results in following sequence: > > movdqu (%eax), %xmm0 > movdqa %xmm0, (%rsp) > movq (%rsp), %rax > movq 8(%rsp), %rdx > movq %rax, 16(%rsp) > movq %rdx, 24(%rsp) > > while -maddress=mode=short produces expected code: > > movq 8(%eax), %rdx > movq (%eax), %rax > movq %rdx, 8(%esp) > movq %rax, (%esp) This is related to PR 55259. This patch: http://gcc.gnu.org/ml/gcc-patches/2012-11/msg00799.html fixes it.