This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/53961] internal compiler error: in memory_address_length, at config/i386/i386.c:23341
- From: "hjl.tools at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 14 Jul 2012 22:46:29 +0000
- Subject: [Bug target/53961] internal compiler error: in memory_address_length, at config/i386/i386.c:23341
- Auto-submitted: auto-generated
- References: <bug-53961-4@http.gcc.gnu.org/bugzilla/>
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.