https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100604

--- Comment #2 from dragan.mladjenovic at syrmia dot com ---
It seems so. Something like this helps in this case:

diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 07e908624a0..a102a9288c5 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -2385,7 +2385,7 @@ adjust_address_1 (rtx memref, machine_mode mode,
poly_int64 offset,
       if (GET_MODE (memref) != BLKmode
          && GET_CODE (addr) == LO_SUM
          && known_in_range_p (offset,
-                              0, (GET_MODE_ALIGNMENT (GET_MODE (memref))
+                              0, (MIN (GET_MODE_ALIGNMENT (GET_MODE (memref)),
attrs.align)
                                   / BITS_PER_UNIT)))
        addr = gen_rtx_LO_SUM (address_mode, XEXP (addr, 0),
                               plus_constant (address_mode,

Don't know which one to trust. The memref has SImode. Caller wants to create
HImode one. The attrs.align matches that of HImode.

Reply via email to