Quando __builtin_memcpy é substituído pelo memcpy da libc
Existe uma versão do C99 / posixmemcpy
função no GCC:__builtin_memcpy
.
Às vezes, ele pode ser substituído pelo GCC para a versão embutida do memcpy e, em outros casos, é substituído pela chamada ao memcpy da libc. Por exemplo. Foi observadoAqui:
Finalmente, em uma nota do compilador, __builtin_memcpy pode retornar a emitir uma chamada de função memcpy.
Qual é a lógica nesta seleção? É a mesma lógica em outros compiladores compatíveis com o gcc, como o clang / llvm, o compilador intel c ++, o PCC, o suncc (oracle studio)?
Quando eu deveria preferir usar o __builtin_memcpy sobre o memcpy simples?