Prazek added a comment. hmm It seems that I mislead you, I suck at C api - memmove source and destination can overlap, but std::move can't. So I guess you have to remove the memmove support. Sorry. https://reviews.llvm.org/D22725