https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120428
--- Comment #15 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Hongtao Liu from comment #13) > The inner loop is not completely unrolled since std::copy is lowered to > __builtin_memmove instead of __builtin_memcpy std::copy allows the end of the output range to overlap with the start of the input range, so memcpy is not suitable. It was always using memmove, even before the r15-4475-g7ed561f63e7955 changes to the library headers.