Index: rtlanal.c
===================================================================
--- rtlanal.c   (revision 192942)
+++ rtlanal.c   (working copy)
@@ -5459,6 +5459,11 @@ strip_address_mutations (rtx *loc, enum
        else if (code == AND && CONST_INT_P (XEXP (*loc, 1)))
         /* (and ... (const_int -X)) is used to align to X bytes.  */
         loc = &XEXP (*loc, 0);
+      else if (code == SUBREG
+              && ! REG_P (XEXP (*loc, 0)) && ! MEM_P (XEXP (*loc, 0)))
+       /* (subreg (operator ...) ...) usually inside and is used for
+          mode conversion too.  */
+       loc = &XEXP (*loc, 0);
        else
         return loc;
        if (outer_code)
