https://gcc.gnu.org/bugzilla/show_bug.cgi?id=41455
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- We could do that I suppose. Of course memcpy will expand to alias-set zero block copies while aggregate assignment can use better info. So in the end this means doing full block-copy expansion on GIMPLE rather than on RTL. Which sounds messy / impossible given stuff like rep; movb; Another option is to not use __builtin_memcpy for aggregate assignments but some internal function call that we can hand extra parameters (for aliasing).