I can&#x27;t see an argument here for why the standard should be changed.  memcpy() does one thing and memmove() does another. Changing the standard so they are the same just because memcpy() gets misused in real-world programs doesn&#x27;t make sense to me.  If people misuse memcpy(), then have a compiler flag akin to -fstrict-aliasing where memcpy() gets rewritten to memmove() unless people compile with -fstrict-memcpy.<p>That seems a separate issue though from what calls the compiler should emit.  I am not following why LLVM would emit memcpy() when the semantics it actually requires from libc are memmove().  Am I missing something?