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



--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> 2012-11-10 04:13:32 
UTC ---

A potential fix:



diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c

index 95bbfa7..d7c454c 100644

--- a/gcc/emit-rtl.c

+++ b/gcc/emit-rtl.c

@@ -2109,6 +2109,12 @@ adjust_address_1 (rtx memref, enum machine_mode mode,

HOS

T_WIDE_INT offset,

     addr = gen_rtx_LO_SUM (address_mode, XEXP (addr, 0),

                    plus_constant (address_mode,

                           XEXP (addr, 1), offset));

+      else if (GET_CODE (addr) == ZERO_EXTEND)

+    {

+      addr = XEXP (addr, 0);

+      addr = plus_constant (GET_MODE (addr), addr, offset);

+      addr = gen_rtx_ZERO_EXTEND (address_mode, addr);

+    }

       else

     addr = plus_constant (address_mode, addr, offset);

     }

Reply via email to