https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78355
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- if (!SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (reg)) || (MEM_ALIGN (reg) < GET_MODE_ALIGNMENT (innermode) && SLOW_UNALIGNED_ACCESS (innermode, MEM_ALIGN (reg))) || MEM_ALIGN (reg) >= GET_MODE_ALIGNMENT (mode)) return true; looks good to me given gcc/defaults.h:#define SLOW_UNALIGNED_ACCESS(MODE, ALIGN) STRICT_ALIGNMENT doesn't do that check itself (maybe it and all ports should be fixed instead...)