http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59163
--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> --- For stores I think the patch already allows that, that is the if (GET_CODE (*x) == SET && &SET_DEST (*x) == data) return 1; in there (the reason why I've added it was that for the misaligned store insns with UNSPEC_STOREU the misaligned MEM is in SET_DEST and SET_SRC just contains some rtl with UNSPEC_STOREU embedded somewhere in it. So, would you like: if (GET_CODE (*x) == SET && (&SET_DEST (*x) == data || &SET_SRC (*x) == data)) return 1; ? That would IMHO handle simple loads from misaligned MEM too.