https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86023
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I suspect we could optimize this at the gimple level too: ``` <bb 9> [local count: 4971102460]: # __last_57 = PHI <_47(9), _45(7)> _47 = __last_57 + 18446744073709551608; _50 = MEM[(int *)_47]; MEM[(int *)_47 + 8B] = _50; _51 = MEM[(int *)_47 + 4B]; MEM[(int *)_47 + 12B] = _51; if (v$_M_start_36 != _47) goto <bb 9>; [89.00%] else goto <bb 8>; [11.00%] ``` We should detect this as a memmove.