http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59163
--- Comment #11 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Jakub Jelinek from comment #10) > 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. Yes. Perhaps also special case sse4.2 string instructions (they can operate on unaligned data, too), and the patch covers everything.