The compiler has different layers. Layer X is nonconforming, which causes undefined behavior in layer M.
Layer M's memcpy doesn't have to have the same semantics as the C standard's memcpy, but the bug report implies that it does.
Layer M's memcpy doesn't have to have the same semantics as the C standard's memcpy, but the bug report implies that it does.
Think of that part of the transformed code as still C for relevant purposes.
And even that is only if the bug report is correct.
My first post is generic and not about this particular issue; it's still fine.
For example, Darwin's libc offers this contract for memcpy and clang is perfectly within its rights to generate such code (note that the IR it generates is still violating LLVM's contract on the memcpy intrinsic); glibc offers no such contract for memcpy, and so clang's code is nonconformant.