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.