https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93737
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- On GIMPLE we're more into canonicalization which means we avoid this kind of expansion and thus at the moment limit it to single load/store cases. But in principle we could apply the same costing as we later do during RTL expansion (note a memcpy/memmove is easier to handle for VN / alias-analysis than decomposed operation). Note memmove can be generally expanded inline if you perform all loads before the first store at the expense of requiring a temporary register for each load.