===================================================================
@@ -5480,7 +5480,8 @@ must_be_base_p (rtx x)
static bool
must_be_index_p (rtx x)
{
- return GET_CODE (x) == MULT || GET_CODE (x) == ASHIFT;
+ return (GET_CODE (x) == MULT || GET_CODE (x) == ASHIFT
+ || GET_CODE (x) == ASHIFTRT || GET_CODE (x) == LSHIFTRT);
}
/* Set the segment part of address INFO to LOC, given that INNER is the
@@ -5519,7 +5520,8 @@ set_address_base (struct address_info *i
static void
set_address_index (struct address_info *info, rtx *loc, rtx *inner)
{
- if ((GET_CODE (*inner) == MULT || GET_CODE (*inner) == ASHIFT)
+ if ((GET_CODE (*inner) == MULT || GET_CODE (*inner) == ASHIFT
+ || GET_CODE (*inner) == ASHIFTRT || GET_CODE (*inner) == LSHIFTRT)
&& CONSTANT_P (XEXP (*inner, 1)))
inner = strip_address_mutations (&XEXP (*inner, 0));
gcc_checking_assert (REG_P (*inner)