Michael Matz wrote:
You must be doing something wrong. If the compiler decides to inline the
string ops it either knows the size or you told it to do it anyway
(-minline-all-stringops or -minline-stringops-dynamically). In both cases
will it use wider than byte moves when possible.
g++ (v. 4.2.3) without any options converts memcpy with unknown size to
rep movsb
g++ with option -fno-builtin calls memcpy in libc
The rep movs, stos, scas, cmps instructions are slower than function
calls except in rare cases. The compiler should never use the string
instructions. It is OK to use mov instructions if the size is known, but
not string instructions.