http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53961

--- Comment #11 from H.J. Lu <hjl.tools at gmail dot com> 2012-07-14 22:46:29 
UTC ---
(In reply to comment #9)
> 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--

It doesn't work.  I will find which checkin on trunk fixed this.

Reply via email to