https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92071
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I'd say this should be fixed in the arm backend, instead of asserts it should check whether operands are aligned and if not, perform unaligned load or store, because the amount of spots in the middle-end that actually just call emit_move_insn when they see a MEM is huge.