http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53961
--- Comment #9 from Uros Bizjak <ubizjak at gmail dot com> 2012-07-14 21:48:32 UTC --- Can you test following patch that prevents non-register AND address operands: --cut here-- Index: i386.c =================================================================== --- i386.c (revision 189483) +++ i386.c (working copy) @@ -11591,7 +11591,8 @@ ix86_decompose_address (rtx addr, struct ix86_addr if (GET_CODE (addr) == SUBREG && GET_MODE (SUBREG_REG (addr)) == SImode) addr = SUBREG_REG (addr); - else if (GET_MODE (addr) == DImode) + else if (REG_P (addr) + && GET_MODE (addr) == DImode) addr = gen_rtx_SUBREG (SImode, addr, 0); else if (GET_MODE (addr) != VOIDmode) return 0; --cut here--